類中成員函式宣告後面的const的含義!

清溪演算法老號發表於2016-06-08

這個const一般是對類中成員函式屬性的宣告,但這個宣告怪怪的,只能放在函式宣告的尾部,大概是因為其它地方都已經被佔用了。這個宣告表示任這個函式不會修改類中的資料成員。如果在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。
以下程式中,類stack的成員函式GetCount僅用於計數,從邏輯上講GetCount應當為const函式。編譯器將指出GetCount函式中的錯誤。

 

class Stack
{
    public:
    void Push(int elem);
    int Pop(void);
    intGetCount(void) const; // const 成員函式
    private:
    int m_num;
    int m_data[100];
};
int Stack::GetCount(void)const
{
    ++ m_num; // 編譯錯誤,企圖修改資料成員m_num
    Pop();// 編譯錯誤,企圖呼叫非const函式
    returnm_num;
}

關於Const函式的幾點規則:
a.在類中被const宣告的成員函式只能訪問const成員函式,而非const函式可以訪問任意的成員函式,包括const成員函式..
b.在類中被const宣告的成員函式不可以修改物件的資料,不管物件是否具有const性質.它在編譯時,以是否修改成員資料為依據,進行檢查.

 

c加上mutable修飾符的資料成員,對於任何情況下通過任何手段都可修改,自然此時的const成員函式是可以修改它的

-------------------------------------------

影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!
影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!
影象處理開發資料、影象處理開發需求、影象處理接私活掙零花錢,可以搜尋公眾號"qxsf321",並關注!

 

相關文章