C 常量成員函式的含義

2021-05-25 02:43:09 字數 641 閱讀 9729

在類x的非常量成員函式中,this指標的型別為x *const。也就是說,它是指向非常量x的常量指標。而在類x的常量成員函式中,this的型別為const x * const。也就是說,是指向常量x的常量指標。這就是常量成員函式和非常量成員函式的區別。

對成員函式的this指標型別加上常量修飾符,就可以解釋函式過載解析是符合區分乙個成員函式的常量和非常量版本的。

有時候乙個真的應該被宣告為常量的成員函式必須要修改其物件,這種情形的正確方式是將有關資料成員宣告為mutable;不要試圖去在此常量函式中,對this進行const cast!!!

class

x//...

void

setbuffer()

void

modifybuffer(

intindex,

intvalue) 

const

//相當不厚道!!!

intgetvalue() 

const

inttrygetvalue() 

const

return

computedvalue_;

不少精彩的例子詳見:

c++必知必會(c++ common knowledge)-----條款10 常量成員函式的含義

常量成員函式

參考 常量成員函式宣告 如 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...

常量物件與常量成員函式

常量物件與常量成員函式來防止修改物件,實現最低許可權原則。可以用關鍵字const來指定物件是不可修改的,任何修改該物件的企圖,都會導致編譯錯誤。例如 const time noon 12,0,0 宣告乙個 time 類的常量物件 noon 並將它初始化為中午 12點。c 不允許在常量物件上呼叫成員函...