天天看點

【C++】類中成員函數聲明後面接 const

const 表示對類中成員函數屬性的聲明;

表示不會修改類中的資料成員;

在編寫const成員函數時,若不慎修改了資料成員,或者調用了其他非const成員函數,編譯器将指出錯誤;

以下程式中,類stack的成員函數GetCount僅用于計數,從邏輯上講GetCount應當為const函數。

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成員函數是可以修改它的