const修飾類的成員函式

2021-07-10 03:32:19 字數 789 閱讀 5312

《effective c++》裡面說,盡量使用const,const修飾變數一般有兩種方式:const t a,或者 t const *a,這兩者都是一樣的,主要看const位於的左邊還是右邊,這裡不再贅述,主要來看一下當const修飾類的成員函式時,成員函式有什麼特點。

類的成員函式後面加 const,表明這個函式不會對這個類物件的資料成員(準確地說是非靜態資料成員)作任何改變。

在設計類的時候,乙個原則就是對於不改變資料成員的成員函式都要在後面加 const,而對於改變資料成員的成員函式不能加 const。所以 const 關鍵字對成員函式的行為作了更加明確的限定:有 const 修飾的成員函式(指 const 放在函式引數表的後面,而不是在函式前面或者參數列內),只能讀取資料成員,不能改變資料成員;沒有 const 修飾的成員函式,對資料成員則是可讀可寫的。

除此之外,在類的成員函式後面加 const 還有什麼好處呢?那就是常量(即 const)物件可以呼叫 const 成員函式,而不能呼叫非const修飾的函式。

注意:兩個成員函式如果只是常量性不同,是可以被過載的

例如:class a

{ public:

void f()

{cout

<<"non const"

{cout

<<" const"

《微軟筆試第二題正是考這個,const 物件呼叫f() const,非const物件呼叫 f()

const修飾成員函式

1 常量限定修飾符,它把乙個物件轉換為常量 constant const物件必須初始化而且是在定義的同時。初始化後的const物件 或指標 是不能修改的。2 修飾成員函式 const類物件只能呼叫const成員函式,不能呼叫普通成員函式 const成員函式不能修改類的成員變數,若要修改則用mutab...

C 類 const修飾普通成員函式

const修飾變數一般有兩種方式 const t a,或者t const a,這兩者都是一樣的,主要看const位於 的左邊還是右邊,這裡不再贅述,主要來看一下當const修飾類的成員函式時,成員函式有什麼特點。類的成員函式後面加 const 表面這個函式不會對這個類物件的資料成員 準確的說是非靜態...

Const 修飾成員函式的作用

const 修飾成員函式的作用.黑月亮 發表於 2005 8 7 16 50 00 const成員函式 任何不會修改資料成員的函式都應該宣告為const型別。如果在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。以下程式中...