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