簡體   English   中英

函數C ++中標准庫函數的重載

[英]Function Overloading for the standard library functions in C++

我有一個免費的功能作為課程的一部分。 在類的構造函數中,我正在做一些malloc操作。 所以在destructor我試圖釋放那個記憶。 但VS10編譯器抱怨說

free(pointer); 

與我班級的自由功能的簽名不符。

所以問題是在一個類中,如果我們實現了與標准庫函數名稱相同的方法。 如何打電話給另一個。

問候,

您必須使用范圍運算符來獲取free函數的正確范圍:

::free(pointer);

::在開頭告訴編譯器在全局范圍內尋找free函數,而不是在你的類中最近的范圍。

您應該對您的函數進行限定:

void YourClass::free(args) {
  ::free(your_member);
}

這將獲取全局命名空間中的free函數,而不是您的類。

#include <cstdio>也將freemalloc放入std命名空間,因此std::freestd::malloc也可以。

(還應考慮使用new / delete ,以及智能指針。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM