C 中的const成員函式

2021-10-01 16:33:25 字數 1290 閱讀 3932

2 mutable關鍵字

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

const物件只能呼叫const成員函式,如果乙個成員函式內部,不會修改任何資料成員,就把它定義為const成員函式。const成員函式內,不能修改任何資料成員!

const成員函式示例:

// test.h

class

test

;// test.cpp

int test::

getcount()

const

class a

;

如上的示例**中兩個function函式構成了過載關係,本質是函式引數的不同,乙個為const型別的this指標傳遞,另乙個為非const型別的this指標傳遞。

mutable關鍵字:

mutable的深入分析:

mutable關鍵可以用來解決如下問題:如何統計某個成員變數的訪問次數?

#include

#include

using

namespace std;

class

test

intgetvalue()

const

void

setvalue

(int value)

intgetcount()

const

~test()

};intmain

(int argc,

char

*ar**)

上述問題還有更好的解決方案:

#include

#include

using

namespace std;

class

test

intgetvalue()

const

void

setvalue

(int value)

intgetcount()

const

~test()

};intmain

(int argc,

char

*ar**)

C 中的const物件與const成員函式

在前邊幾章的內容中,我們知道c 的類中可以有const成員變數,並且還知道類中的const成員變數只能在初始化列表中初始化。同樣,在c 中,還存在const物件以及const成員函式,const修飾的物件為唯讀物件,他們的特性如下 const成員函式的定義 需要在函式的宣告及定義的後邊加上const...

c 中const物件與const成員函式

一些成員函式改變物件,一些成員函式不改變物件。例如 int point gety 這個函式被呼叫時,不改變point物件,而下面的函式改變point物件 void point setpt int x,int y 為了使成員函式的意義更加清楚,我們可在不改變物件的成員函式的函式原型中加上const說明...

C 中const成員函式和const物件

一 c 中函式和物件 1.const資料成員 跟const常量一樣,只是乙個在類裡 而且是在建構函式裡 乙個在類外而已,都必須初始化。2.const成員函式 即普通成員函式後再加const。它可以讀取資料成員的值,但不能修改它們。若要修改 時,資料成員前必須加mutable。以指定其可被任意更改。m...