4 5 引用與複製建構函式

2021-07-13 10:18:58 字數 2232 閱讀 2800

◆ 

1、什麼是引用?

引用又稱

別名(alias),是一種非常特殊的資料型別。它不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名,也就是c++系統不為引用型別變數分配記憶體空間。引用主要用於函式之間的資料傳遞。

引用定義的格式為:

型別 &引用變數名=已定義過的變數名;

例如:double number ;

double &newnum=number ;

newnum是新定義的引用型別變數,它是變數number的別名,兩個變數代表同一塊記憶體。

◆ 2、【例4.3】使用乙個函式交換兩個資料。

(檢視動畫演示

)#include

void swap(double & d1,double & d2) //d1和d2是引用型變數

void main(void)

◆ 3、引用可以作為函式的返回值

一般函式返回值時,要生成乙個臨時變數作為返回值的拷貝,而用引用作為返回值時,不生成值的拷貝。

【例4.4】採用不同返回方式的求正方形面積函式的比較。

#include

using namespace std;

double temp;

double fsqr1(double a)

double & fsqr2(double a)

int main()

幾點注意:

在建立新物件時可用同一類的另乙個物件來初始化該物件,例如,得到乙個和「商品甲」屬性相同的「商品乙」,當然二者的名字(物件名稱)不同。這時所用的建構函式稱為

複製建構函式

(copy constructor)。

◆ 1、什麼是複製建構函式?

對於cgoods類,可以定義複製建構函式為:

cgoods (cgoods & cgd)

;這裡必須注意複製建構函式的引數——同類(class)的物件採用的是引用的方式。如果把乙個真實的類物件作為引數傳遞到複製建構函式,會引起無窮遞迴 。所以必須將複製建構函式的引數定義為乙個類的物件的引用。

◆ 2、 若使用者沒有定義複製建構函式,系統會自動提供,稱為預設的按成員語義支援的複製建構函式,每個成員的值被依次拷貝,亦稱為預設的按成員初始化。

按成員作複製是通過依次拷貝每個資料成員實現的,而不是對整個類物件按位拷貝。賦值運算子「=」稱預設的按成員拷貝賦值操作符,同類物件之間可以用「=」直接拷貝 。

◆ 3、在某些情況下,預設的按成員複製對類與物件的安全性和處理的正確性還不夠,這時就要求類的設計者提供專門的複製建構函式(copy constructor)和複製賦值操作符'='(copy assignment operator)的定義。

◆ 4、複製建構函式的使用

例如以下:物件cary和物件carz的產生就是

通過系統自動呼叫複製建構函式

的,他們的屬性等和carx完全相同:

cgoods carx(「夏利2000」,30,98000.0);

cgoods cary=carx,carz(carx);

◆ 5、複製建構函式並不只是在同類的乙個物件去初始化該類的另乙個物件時使用

,它還在另二個方面使用:◆ 

1、什麼是成員物件?

【例4.6】含有成員物件的類:

class student

~studentid()

}; //學號類studentid的定義結束,注意分號

private:

char name[20];

studentid id;

//id是乙個成員物件,它既是類student的成員,又是類studentid型的物件

public:

student (char* sname=「no name」,long sid=0):id(sid)

//關注id的構造!

//sname 現暫看作字串,char*是指向字元的指標型別

}; //類student定義結束

◆ 2、student型的物件構造時,其中的成員物件id如何產生?

上面**中,student類的建構函式頭後半部分語句 :id(sid) 即可使系統呼叫物件id所屬類studentid的建構函式,以產生id。

◆ 3、c++中對含成員物件的類物件的建構函式有特殊的格式:

類名::建構函式名(引數總表):成員物件1(參數列1),成員物件2(參數列2),……成員物件n(參數列n)

◆ 4、先呼叫哪個物件成員的建構函式,取決與它們在類中說明的順序;物件產生時,先初始化物件成員,後初始化其他成員;物件撤銷時,相反。

C 引用與複製建構函式

1 什麼是引用?引用又稱別名 alias 是一種非常特殊的資料型別。它不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名,也就是c 系統不為引用型別變數分配記憶體空間。引用主要用於函式之間的資料傳遞。引用定義的格式為 型別 引用變數名 已定義過的變數名 例如 double number d...

實驗二 引用與函式

1.熟悉引用的概念,掌握引用的定義方法,學會引用在c 程式中的應用。2.掌握函式的定義和呼叫方法。3.練習過載函式的使用。1.除錯下列程式,寫出輸出結果,並解釋輸出結果。1 include using namespace std int main double max1 double x,doubl...

實驗二 引用與函式

1 熟悉引用的概念,掌握引用的定義方法,學會引用在c 程式中的應用。2 掌握函式的定義和呼叫方法。3 練習過載函式的使用。1 除錯下列程式,寫出輸出結果,並解釋輸出結果。1 實驗程式 sy2 1.cpp includeusing namespace std int main 函式宣告 1 總結引用的...