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...