函式名前後的const

2021-08-01 22:27:27 字數 792 閱讀 1571

一、概念

當const在函式名前面的時候修飾的是函式返回值,在函式名後面表示是常成員函式,該函式不能修改物件內的任何成員,只能發生讀操作,不能發生寫操作。

二、原理:

我們都知道在呼叫成員函式的時候編譯器會將物件自身的位址作為隱藏引數傳遞給函式,在const成員函式中,既不能改變this所指向的物件,也不能改變this所儲存的位址,this的型別是乙個指向const型別物件的const指標。

具體示例:

乙個函式名字後有const,這個函式必定是成員函式,也就是說普通函式後面不能有const修飾,如:int print( ) const 這個函式必定為成員函式,即在類裡面定義的函式。

在乙個類裡定義了乙個const成員函式後,則此函式不能修改類中的成員變數,如果定義了乙個類的const物件(非const物件可以呼叫const成員函式和非const成員hanshu ),它只能呼叫類中的const成員函式,如:

class

text //錯誤,有const修飾,不能修改k的值,

private:

int k;

};const text a;

int main()

//void

print() const {} 和 void

print() {} 是過載函式,假如物件為const,則呼叫void

print () const成員函式,如果為非const,則呼叫void

print() ;

class

text

const放在函式前後的區別

int b 500 1 const int a b 2 int const a b 3 int const a b 4 const int const a b 對於1和2 const 放在 左側,就是用來修飾指標所指向的變數,即指標指向的是常量。若a是倉庫管理員,b是倉庫。即倉庫中的貨物 a 不允許...

const在函式前後的意義

1 只允許在類的非靜態成員函式後面加const 加到非成員函式 或 靜態成員後面會產生編譯錯 2 後面加的const其實是對隱含傳入引數this指向類物件的修飾,即 this 是被const修飾,那this所指向的類物件的成員都是不允許被修改的 備註 有人認為const修飾的是this指標,那麼不能...

C 函式前後加const的區別

1 函式前後const 函式前const 普通函式或成員函式 非靜態成員函式 前均可加const修飾,表示函式的返回值為const,不可修改。格式為 const returntype functionname param list 函式後加const 只有類的非靜態成員函式後可以加const修飾,表...