1. 程式人生 > >C++ const關鍵字的使用總結

C++ const關鍵字的使用總結

網上關於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、持續更新,未完待續...