C 類 const修飾普通成員函式

2022-02-17 11:32:22 字數 1419 閱讀 4476

const修飾變數一般有兩種方式:const t *a,或者t const *a,這兩者都是一樣的,主要看const位於*的左邊還是右邊,這裡不再贅述,主要來看一下當const修飾類的成員函式時,成員函式有什麼特點。

類的成員函式後面加 const ,表面這個函式不會對這個類物件的資料成員(準確的說是非靜態資料成員)作任何改變。

在設計類的時候,乙個原則就是對於不改變資料成員的成員函式都要在後面加const,而對於改變資料成員的成員函式不能加const。所以const關鍵字對成員函式的行為作了更加明確的限定:

1.有const修飾的成員(指 const 放在函式引數表的後面,而不是在函式前面或者參數列內),只能讀取資料成員,不能改變資料成員;

2.在類的成員函式後面加 const 還有什麼好處,那就是常量(即const)物件可以呼叫const成員函式,而不能呼叫非const 成員函式。

1

int myfun(void) const

//const修飾的是成員函式

2 {}//

函式內部不能修改 普通成員變數 mutable修飾時例外

1

class

data219

20data()

2124 data(int

data)

2529 data(const data &ob)

3034 ~data()

3538

};39

void

test02()

40

class

data

//編譯器認為 普通成員函式 存在修改成員變數 可能

void setdata(int data) const

data()

data(

intdata)

data(

const data &ob)

~data()

};void

test03()

1)const成員函式可以訪問非const物件的非const資料成員、const資料成員,也可以訪問const物件內的所有資料成員;

2)非const成員函式可以訪問非const物件的非const資料成員、const資料成員,但不可以訪問const物件的任意資料成員;

3)作為一種良好的程式設計風格,在宣告乙個成員函式時,若該成員函式並不對資料成員進行修改操作,應盡可能將該成員函式宣告為const 成員函式。

4)如果只有const成員函式,非const物件是可以呼叫const成員函式的。當const版本和非const版本的成員函式同時出現時,非const物件呼叫非const成員函式。

const int num = 10;//系統不會給num開闢空間 num被放入符號表中 如果後期對&num 這時系統才會給num開闢空間

const修飾類的成員函式

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

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

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

const修飾成員函式

1 常量限定修飾符,它把乙個物件轉換為常量 constant const物件必須初始化而且是在定義的同時。初始化後的const物件 或指標 是不能修改的。2 修飾成員函式 const類物件只能呼叫const成員函式,不能呼叫普通成員函式 const成員函式不能修改類的成員變數,若要修改則用mutab...