1. 程式人生 > 實用技巧 >C++函式宣告的時候後面加const

C++函式宣告的時候後面加const

轉自:http://blog.csdn.net/zhangss415/article/details/7998123

非靜態成員函式後面加const(加到非成員函式或靜態成員後面會產生編譯錯誤),表示成員函式隱含傳入的this指標為const指標,決定了在該成員函式中,任意修改它所在的類的成員的操作都是不允許的(因為隱含了對this指標的const引用);唯一的例外是對於mutable修飾的成員。加了const的成員函式可以被非const物件和const物件呼叫,但不加const的成員函式只能被非const物件呼叫。例如:

class A {
    private: int m_a;
    public
: A() : m_a(0) {} int getA() const { return m_a; //同return this->m_a;。 } int GetA() { return m_a; } int setA(int a) const { m_a = a; //這裡產生編譯錯誤,如果把前面的成員定義int m_a;改為mutable int m_a;就可以編譯通過。 }
int SetA(int a) { m_a = a; //同this->m_a = a; } }; A a1; const A a2; int t; t = a1.getA(); t = a1.GetA(); t = a2.getA(); t = a2.GetA(); //a2是const物件,

呼叫非const成員函式產生編譯錯誤。 一般對於不需修改操作的成員函式儘量宣告為const成員函式,以防止產生const物件無法呼叫該成員函式的問題,同時保持邏輯的清晰。