const 只能放在類成員函式的後面

2021-06-20 13:43:00 字數 630 閱讀 9974

const用在成員函式後   主要是針對類的const 物件  

class   text  

void print();

void print() const;

private:

int r1, r2;

};

void r::print()

;int const a::func()

int a::func() const

上面的**是合法的,其中a::func成員函式是乙個過載成員函式,兩個函式都返回int型別資料(注意:對於c/c++,返回型別或引數型別中,const int和int被認為是一種型別。但是const int *和int *不是一種型別),這兩個過載函式正是基於函式名後的const來過載的。

int const func();表示該成員函式的隱藏this指標引數是a * const型別的;而int func() const;表示該過載成員函式的隱藏this指標引數是a const * const型別的.

a * const型別和a const * const型別是不同型別,因此可以過載。

由此可見const放在函式名後和名前是不同的

const物件只能呼叫const成員函式

假設現在有如下 class test test obj1 12 obj1.print 物件呼叫成員函式時,在形參列表的最前面加乙個形參this,但這是隱式的。this指標是預設指向呼叫函式的當前物件的,所以,很自然,this是乙個常量指標test const,因為不可以修改this指標代表的位址。但...

const與類成員函式

既然類的例項是個物件,那麼它也應該可以被 const 修飾。按照 const 的定義,const sampleclass foo const 與 sampleclass foo 並不是同樣的東西。簡單來說,foo const 不能被改變,顯然也就是它的字段不能被改變。那麼普通的物件 foo能做的事情...

const修飾類的成員函式

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