1.常引用
用const宣告的引用就是常引用。常引用所引用的物件不能被更改。我們經常見到的是常引用作為函式的形參,這樣不會發生對實參的誤修改。常引用的宣告形式為:const 型別說明符 &引用名。雞啄公尺給大家看個常引用作為函式形參的例子:
#include
using
namespace
std;
void
show
(const
double&r
);
intmain
()
void
show
(const
double&r
)
//常引用作形參,在函式中不能更新r所引用的物件。
2.常物件
所謂常物件,是指資料成員在它的生存期內不會被改變。定義常物件時必須對其進行初始化,並且不能改變其資料成員的值。常物件的宣告形式為:類名 const 物件名 或者 const 類名 物件名。常物件的例子如下:
class
a
...
private
:
intx,y
;
};
a
consta(
6,8);
//a是常物件,不能被更新
如果程式中出現對常物件的資料成員修改的語句,編譯器會報錯。一般修改物件的資料成員有兩種途徑,一種是通過物件名訪問公有資料成員並修改其值,而常物件的資料成員是不能被修改的;另一種是類的成員函式修改資料成員的值,而常物件不能呼叫普通的成員函式。可是這樣的話,常物件就只剩資料,沒有對外的介面了,這就需要為常物件專門定義的常成員函式了。
3.類的常成員函式
類中用const宣告的成員函式就是常成員函式。常成員函式的宣告形式為:型別說明符 函式名(參數列) const;。
雞啄公尺要提醒大家注意幾點:a.常成員函式在宣告和實現時都要帶const關鍵字;b.常成員函式不能修改物件的資料成員,也不能訪問類中沒有用const宣告的非常成員函式;c.常物件只能呼叫它的常成員函式,不能呼叫其他的普通成員函式;d.const關鍵字可以被用於參與對過載函式的區分,比如,如果有兩個這樣宣告的函式:void fun(); void fun() const;,則它們是過載函式。
#include
using
namespace
std;
class
r
void
();
void
()const
;
private
:
intr1,r2
;
};
voidr::
()
voidr::
()const
intmain
()
上面的r類中宣告了兩個同名函式print,第二個是常成員函式。在main函式中定義了兩個物件a和b,b是常物件,通過a呼叫的是沒有用const宣告的函式,而通過b呼叫的是用const宣告的常成員函式。
4.類的常資料成員
類的資料成員也可以是常量和常引用,用const宣告的資料成員就是常資料成員。在任何函式中都不能對常資料成員賦值。建構函式對常資料成員初始化,只能通過初始化列表。雞啄公尺給大家乙個常資料成員的例子:
#include
using
namespace
std;
class
a
;
const
inta::b
=20;
a::a
(inti):
a(i),
r(a)
{}
voida::
()
intmain
()
此程式的執行結果是:
50:20:50
10:20:10
常物件,常成員函式,常引用
宣告顯示 const 型別說明符 物件名 常物件的資料成員值在物件的整個生存期間不能被改變,即就是,常物件必須進行初始化,而且不能被更新。宣告形式 型別說明符 函式名 參數列 const 注意 1.在函式定義部分也需要帶const關鍵字。2.乙個常物件只能呼叫它的常成員函式,是常物件唯一的對外介面方...
C 共享資料的保護(常物件,常成員,常引用)
1 常物件 必須進行初始化並且不能被修改。class fun private int x const fun funa 2 2 常成員函式 型別說明符 函式名 參數列 const 1 在函式的定義部分也要帶上const關鍵字。2 如果乙個物件是常物件,那麼常物件只能呼叫常成員函式,不可以呼叫其他函式...
C 之常物件,常物件成員
一.常物件 1.常物件定義 time const t1 1,2,3 或者const time t1 2.常物件不能呼叫該物件的非const型的成員函式 系統主動呼叫的構造析構函式除外 3.常成員函式的宣告方法,後面加個const即可 void get time const 4.常物件不能修改物件內的...