C 程式設計必知 常引用 常物件和物件的常成員

2021-07-11 20:52:31 字數 2959 閱讀 5887

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

print

();

void

print

()const

;

private

:

intr1,r2

;

};

voidr::

print

()

voidr::

print

()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::

print

()

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.常物件不能修改物件內的...