常量成員函式,指向this的指標

2021-08-25 19:38:05 字數 619 閱讀 8048

在類中,形如

test combine(const test &latter) const

這樣的成員函式為常量成員函式。當test的物件呼叫combine函式時,隱式指標this會指向呼叫該函式的物件,this指標預設為常量指標,即test *const型別,當該物件為常量物件時,this指標不能指向它,會報錯。在combine引數列表後加上const,可以將this指標表示為指向常量的常量指標,即const test *const型別,這時常量物件就可以正常呼叫該成員函式,靈活性變高。因此,常量成員函式不能改變呼叫它的物件的成員。

常量物件、常量物件的引用和指標只能呼叫常量成員函式。

test combine(const test &latter) 

a.combine(b);

注意,此時combine函式已經沒有const,可以通過該函式改變成員。呼叫combine函式時,呼叫該函式的物件是a,因此this指標會指向a,num += latter.num 實則為this.num += latter.num,返回this的解引用,即返回a,但此時a的成員num已經被修改過。

常量成員函式

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

C 中的this指標和常量成員函式

預設情況下,編譯器為類的每個成員函式提供了乙個隱式形參,該形參指向被呼叫的成員函式所在的物件。該隱式形參成為this。常量成員函式是乙個不會修改呼叫它的物件的函式。1.this指標 隱式物件形參的實際形參就是呼叫成員函式的物件的位址。因此在類的成員函式中也可以通過使用 this 表示式來訪問呼叫它的...