C 中const成員函式和const物件

2021-07-16 20:14:09 字數 918 閱讀 9507

一、c++中函式和物件

1.const資料成員:跟const常量一樣,只是乙個在類裡(而且是在建構函式裡),乙個在類外而已,都必須初始化。

2.const成員函式:即普通成員函式後再加const。它可以讀取資料成員的值,但不能修改它們。若要修改

時,資料成員前必須加mutable。以指定其可被任意更改。mutable是ansi c++考慮到實際程式設計時,可能一定要修改const物件中的某個資料成員而設的。const成員函式可以被相同參數列的非const成員函式過載。

3.普通物件:可以呼叫任意成員函式。見下面的例子

4.const物件:僅能呼叫const成員函式,但是建構函式和析構函式是唯一不是const成員函式卻可以被const物件呼叫的成員函式。

二、例1

class point ; int point::gety() const//const 成員函式應該在函式原型說明和函式定義中都增加const 限定:

三、例2

class set  	bool member(const int) const; 	void addelem(const int); 	//... private: 	int card; }; bool set::member (const int elem) const
非常量成員函式不能被常量成員物件呼叫,因為它可能企圖修改常量的資料成員:

const set s;

s.addelem(10); // 非法: addelem 不是常量成員函式

s.member(10); // 正確

但建構函式和析構函式對這個規則例外,它們從不定義為常量成員,但可被常量物件呼叫(被自動呼叫)。它們也能給常量的資料成員賦值。

四、最後乙個例子

class a 	void printa() 	void printa()

C 中類的const成員函式和const物件

2.const成員函式 即普通成員函式後再加const。它可以讀取資料成員的值,但不能修改它們。若要修改 時,資料成員前必須加mutable。以指定其可被任意更改。mutable是ansic 考慮到實際程式設計時,可能一定要修改const物件中的某個資料成員而設的。const成員函式可以被相同參數列...

C 中的const成員函式和mutable關鍵字

在c 中,如果乙個類的成員函式不會改變這個類的成員變數的值,我們通常將這樣的函式宣告稱const成員函式。例如,1 classdummy2 在編寫和使用const成員函式的時候需要知道幾點規則 a.const物件只能訪問const成員函式,不能訪問非const函式。b.const物件的成員是不可修改...

C 中的const成員函式

2 mutable關鍵字 對於乙個const物件來說,是不能呼叫普通的成員函式的。因為,c 認為,const 常量 物件,如果允許去呼叫普通的成員函式,而這個成員函式內部可能會修改這個物件的資料成員!而這將導致const物件不再是const物件!const物件只能呼叫const成員函式,如果乙個成員...