C++ const關鍵字的使用總結
阿新 • • 發佈:2018-12-12
網上關於const的使用已經有大量的文章進行介紹。這裡僅僅總結個人遇到的一些有趣的情況:
1、當宣告一個物件為const屬性時,它的成員函式也得是const屬性。 背景:有一個如下的類。和本問題相關的地方只需要關注——GetSize函式和複製建構函式。如果刪除GetSize函式的const屬性,則複製建構函式在實現過程中編譯器會提示出錯,錯誤截圖在下方。
class SumOfFunctions { public: ~SumOfFunctions() {}; //destructor SumOfFunctions() {}; //default constructor SumOfFunctions(const SumOfFunctions& sof); //copy constructor SumOfFunctions& operator= (const SumOfFunctions& sof); //assignment operator double Sum(double x); double operator() (double x) const { return Sum(x); }; void AddNew(Function* fun) {vec.push_back(fun);} int GetSize() const {return vec.size();} Function* GetPointerAt(int i) const {return vec[i];} protected: vector<Function*> vec; };
2、帶有const的成員函式在呼叫另一個成員函式時也得是const屬性的。比如下圖:須在Sum函式定義時新增const關鍵詞,方可無錯誤。
3、持續更新,未完待續...