類物件成員函式的const增強zz

2021-09-05 14:42:13 字數 749 閱讀 9648

類物件成員函式的const增強

類物件成員函式的const增強c++語言的2.0版為const配置了若干新的應用,在c++的早期版本中,成員函式的呼叫可能改變const類物件的值。這肯定是個問題了。如果我們不允許使用const類的成員函式,我們還要const物件幹什麼用,為了讓語言成為完備的,在2.0版本後引入了const成員函式,它的乙個作用就是讓const物件能夠呼叫的成員函式。編譯程式保證const成員函式不改變成員函式內使用的物件內部資料的值,而且還保證了const類的物件能夠使用const型別的函式。下面我們來看一段**:

struct s

g(int aa) const   //請注意,這個函式並沒有改變作為類成員資料的a的值

//h(int aa) const //這一句是錯誤的,因為它試圖改變類的成員資料a的值

void g()

{

s o1;

const s o2;  //請注意,這裡的是乙個const型別的物件;

o1.a = 1;

// o2.a = 2;

o1.f(3);

//在const型別物件中試圖呼叫非const型別的成員函式;

o1.g(5);

o2.g(6);

如果我們把一些注釋掉的語句恢復過來,我們會發現,這樣的程式是不能通過編譯的。因為它們不是試圖呼叫const型別物件中的非const型別函式,就是在const型別成員函式中試圖改變類成員資料的值。

const物件與const成員函式

const物件只能呼叫const成員函式 includeusing namespace std class a public void fun const cout const 成員函式 但是如果把第以1個fun注釋掉就會出錯 error c2662 a fun 不能將 this 指標從 const...

C 類和物件 const修飾成員函式

常函式 常物件 include using namespace std class person mutable int m age 特殊變數,加關鍵字mutable,即使在常函式中也可以修改這個值 void test1 intmain include using namespace std cla...

類中的常量, const物件和成員函式

常量 起初讀者可能認為合乎邏輯的選擇是把乙個const放在類裡,但這不會產生預期的結果。在乙個類裡,const 恢復它在c中的一部分意思。它在每個類物件裡分配儲存並代表乙個值,這個值一旦被初始化以後就不能改變。在乙個類裡使用const的意思是 在這個物件宣告期內,這個是乙個常量 然而,對這個常量來講...