手把手教你如何使用C 復(fù)制構(gòu)造函數(shù)
C 是一種非常廣泛使用的計(jì)算機(jī)編程語(yǔ)言,作為C語(yǔ)言的繼承,它支持多范型的通用程序設(shè)計(jì)語(yǔ)言。C 可以支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。C 在系統(tǒng)開(kāi)發(fā)
C 是一種非常廣泛使用的計(jì)算機(jī)編程語(yǔ)言,作為C語(yǔ)言的繼承,它支持多范型的通用程序設(shè)計(jì)語(yǔ)言。C 可以支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。C 在系統(tǒng)開(kāi)發(fā)、引擎開(kāi)發(fā)等應(yīng)用領(lǐng)域得到廣泛應(yīng)用,深受程序員的喜愛(ài)。
使用Dev-C 來(lái)編寫(xiě)C 代碼
1. 首先,雙擊或右擊打開(kāi)桌面上的Dev-C 軟件,確保它已經(jīng)成功運(yùn)行。Dev-C 是一個(gè)適合于初學(xué)者使用的入門(mén)級(jí)C/C 集成開(kāi)發(fā)環(huán)境(IDE),在Windows窗口運(yùn)行環(huán)境下非常方便。
2. 點(diǎn)擊文件選項(xiàng),選擇新建源代碼。此時(shí)新建的代碼文本還沒(méi)有命名,是一個(gè)空文件。為了方便日后找到文件,可以選擇另存為,并將文件保存在電腦的桌面上或任何其他盤(pán)符中。
復(fù)制構(gòu)造函數(shù)的定義和使用
C 中的復(fù)制構(gòu)造函數(shù)形如X::X(X ),只有一個(gè)參數(shù)即對(duì)同類對(duì)象的引用。如果沒(méi)有定義自己的復(fù)制構(gòu)造函數(shù),編譯器會(huì)生成默認(rèn)的復(fù)制構(gòu)造函數(shù)。
例如,我們有一個(gè)Complex類:
```cpp
class Complex {
private:
double real, imag;
public:
Complex(Complex c) {
real ;
imag ;
cout << "Copy Constructor called" << endl;
}
};
```
在這個(gè)例子中,如果沒(méi)有定義復(fù)制構(gòu)造函數(shù),編譯器會(huì)生成默認(rèn)的復(fù)制構(gòu)造函數(shù)。
注意,不允許定義形如X::X(X)的構(gòu)造函數(shù),例如:
```cpp
class CSample {
CSample(CSample c) { // 錯(cuò)誤,不允許這樣的構(gòu)造函數(shù)
}
};
```
即使缺省的不帶參數(shù)的構(gòu)造函數(shù)不存在,缺省的復(fù)制構(gòu)造函數(shù)仍然存在。例如:
```cpp
class C1 {
public:
C1() {} // 默認(rèn)構(gòu)造函數(shù)
};
C1 c1, c2(c1); // 使用默認(rèn)構(gòu)造函數(shù)初始化c1和c2
```
復(fù)制構(gòu)造函數(shù)的調(diào)用情況
復(fù)制構(gòu)造函數(shù)在以下三種情況下被調(diào)用:
a. 用一個(gè)對(duì)象去初始化同類的另一個(gè)對(duì)象時(shí):
```cpp
Complex c2(c1);
Complex c2 c1;
```
b. 如果某個(gè)函數(shù)的參數(shù)是類A的對(duì)象,那么當(dāng)該函數(shù)被調(diào)用時(shí),類A的復(fù)制構(gòu)造函數(shù)將被調(diào)用:
```cpp
void f(A a) {
a.x 1;
}
A aObj;
f(aObj); // 調(diào)用A的復(fù)制構(gòu)造函數(shù),將aObj作為參數(shù)傳入函數(shù)
```
通過(guò)以上步驟,你已經(jīng)了解了如何使用C 的復(fù)制構(gòu)造函數(shù)。希望這篇文章對(duì)你有所幫助!