直接傳遞物件名
用物件名做函式引數時,在函式呼叫時將建立乙個新的物件,它是形參物件的拷貝。
***************=下面給出乙個直接傳遞物件名的例子程式1.1***************===
複製** **如下:
#include
using namespace std;
class time
;time::time(int y,int m,int d)
void time::print()
void time::reset(time t)
int main()
執行結果:
從執行結果來看,reset函式並沒有起到作用。
實參把值傳遞給形參,二者分別佔不同的儲存空間。無論形參是否修改都不會到實參的值。這種形式的虛實結合,要產生實參的拷貝,當物件的規模比較大的時候,則時間開銷和空間開銷都可能很大。
因此,這種方法雖然可行,但是並不提倡這種用法~
形參為物件的引用
如果形參為物件的引用名,實參為物件名,則在呼叫函式進行虛實結合時,並不是為形參另外開闢乙個儲存空間(常稱為建立實參的乙個拷貝),而是把實參變數的位址傳給形參(引用名),這樣引用名也指向實參變數。
對於程式1.1而言,我們只需要將reset函式的形參宣告為物件的引用即可。
複製** **如下:
#includewww.cppcns.com
using namespace std;
class time
;time::time(int y,int m,int d)
void time::print()
void time::reset(time &t)//**********====對這一行**進行了修改***************==
int main()
執行結果:
形參為物件的常引用
如果我們在宣告函式的引數為物件引用的時候,還可以將它宣告為const(常引用)
複製** **如下:
void reset(const time &t);
則在函式中只能使用物件t中的資料成員和成員函式,而不能修改其中的成員函式,也就是不能修改其對應的實參中的資料成員的值。
複製** **如下:
#include
using namespace std;
class time
;time::time(int y,int m,int d)
void time::print()
void time::reset(const time &t)
int main()
該程式會報錯,因為在函式reset中,企圖修改物件t中的資料成員的值
本文標題: c++中物件的常引用總結
本文位址:
c 中的常量,常物件,常引用,常指標
所謂常量是指在程式執行中值始終不可改變的量。而常物件是指他的資料成員在物件的整個生存週期內不能改變。這也意味著不能用常物件去呼叫普通的成員函式,因為有可能會改變常物件的資料成員,所以便有了常成員函式。如果乙個物件被宣告為常物件,他只能呼叫常成員函式。普通物件也能呼叫常成員函式,但是會被視為常物件,即...
C 程式設計必知 常引用 常物件和物件的常成員
1.常引用 用const宣告的引用就是常引用。常引用所引用的物件不能被更改。我們經常見到的是常引用作為函式的形參,這樣不會發生對實參的誤修改。常引用的宣告形式為 const 型別說明符 引用名。雞啄公尺給大家看個常引用作為函式形參的例子 include using namespace std voi...
C 共享資料的保護(常物件,常成員,常引用)
1 常物件 必須進行初始化並且不能被修改。class fun private int x const fun funa 2 2 常成員函式 型別說明符 函式名 參數列 const 1 在函式的定義部分也要帶上const關鍵字。2 如果乙個物件是常物件,那麼常物件只能呼叫常成員函式,不可以呼叫其他函式...