常量物件與常量成員函式

2021-08-20 04:10:47 字數 910 閱讀 9320

常量物件與常量成員函式來防止修改物件,實現最低許可權原則。

可以用關鍵字const來指定物件是不可修改的,任何修改該物件的企圖,都會導致編譯錯誤。

例如:const time noon(12,0,0);    

宣告乙個

time 

類的常量物件

noon

,並將它初始化為中午

12點。

c++不允許在常量物件上呼叫成員函式,除非成員函式本身也被宣告為常量。甚至對不會修改物件的成員函式,也是如此,此外,編譯器不允許宣告常量的成員函式修改物件。

對一般情況下,通常修改物件的建構函式和析構函式而言,它們不允許被宣告成const

。關於常量物件和常量成員函式的使用方法如下:

(1)非常量物件呼叫非常量成員函式         (正確)

(2)非常量物件呼叫常量成員函式           (正確)

(3)常量物件呼叫常量成員函式             (正確)

(4)常量物件呼叫非常量成員函式           (錯誤)

儘管建構函式必須是非常量成員函式,但它仍然可用於初始化常量物件。

常量物件的「常量性」是在建構函式完成了物件的初始化之後生效的,持續到呼叫了物件的析構函式。

成員函式沒有修改物件的事實,並不足以表明它就是常量函式,常量函式必須顯式地用const

宣告。常量成員函式的初始化必須用初始化列表。

例如:increment::increment(int c,int i) : count(c),increment(i);{}

初始化列表出現在建構函式的參數列 和 表示建構函式函式體開始的左大括號之間。成員初始化列表用冒號和參數列隔開。

常量資料成員(常量物件和常量變數)以及被宣告為引用的資料成員,都必須用成員初始化列表初始化,在建構函式中對這些型別的資料賦值是不允許的。

常量成員函式與常量物件

一 非常量物件可以訪問類的普通成員函式和常量成員函式 include using namespace std class stack void push int nelem intpop int getcount const 常量成員函式 int main 二 常量物件只能訪問常量成員函式,不能訪問...

常量成員函式

參考 常量成員函式宣告 如 int get const 規則 1.常量成員函式不修改物件。2.常量成員函式在定義和宣告中都應加const限定 3.非常量成員函式不能被常量成員函式呼叫,但建構函式和析構函式除外。4.常量 const物件 物件只能呼叫常量成員函式。const物件的資料成員在物件壽命週期...

常量成員函式

class a void fun1 const error assignment of member a a in read only objectclass a void fun1 const error passing const a as this argument of void a fun...