使用C++類對象構(gòu)造函數(shù)
所謂C++類對象:一個類的所有對象對應(yīng)同一個類對象,想要學(xué)好C++類對象。首先要了解C++語言的概念是非常重要的,那么就先說一下什么是C++語言,所謂C++語言:是一種使用非常廣泛的計算機(jī)編程語言。
在學(xué)習(xí)這一章內(nèi)容前我們已經(jīng)學(xué)習(xí)過了類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)知識,對于普通類型的對象來說,他們之間的復(fù)制是很簡單的,自己定義的類的對象同樣是對象,誰也不能阻止我們用以下的方式進(jìn)行復(fù)制,例如:
- include <iostream>
- using namespace std;
- class Test
- {
- public:
- Test(int temp)
- {
- p1=temp;
- }
- protected:
- int p1;
- };
- void main()
- {
- Test a(99);
- Test b=a;
- }
普通對象和類對象同為C++類對象,他們之間的特性有相似之處也有不同之處,類對象內(nèi)部存在成員變量,而普通對象是沒有的,當(dāng)同樣的復(fù)制方法發(fā)生在不同的對象上的時候。那么系統(tǒng)對他們進(jìn)行的操作也是不一樣的,就類對象而言,相同類型的類對象是通過拷貝構(gòu)造函數(shù)來完成整個復(fù)制過程的,在上面的代碼中。
- #include <iostream>
- using namespace std;
- class Test
- {
- public:
- Test(int temp)
- {
- p1=temp;
- }
- Test(Test &c_t)//這里就是自定義的拷貝構(gòu)造函數(shù)
- {
- cout<<"進(jìn)入copy構(gòu)造函數(shù)"<<endl;
- p1=c_t.p1;//這句如果去掉就不能完成復(fù)制工作了,此句復(fù)制過程的核心語句
- }
- public:
- int p1;
- };
- void main()
- {
- Test a(99);
- Test b=a;
- cout<<b.p1;
- cin.get();
- }
我們并沒有看到拷貝構(gòu)造函數(shù),同樣完成了復(fù)制工作,這又是為什么呢?因為當(dāng)一個類沒有自定義的拷貝構(gòu)造函數(shù)的時候系統(tǒng)會自動提供一個默認(rèn)的拷貝構(gòu)造函數(shù),來完成復(fù)制工作。
下面,我們?yōu)榱苏f明情況,就普通情況而言(以上面的代碼為例),C++類對象來自己定義一個與系統(tǒng)默認(rèn)拷貝構(gòu)造函數(shù)一樣的拷貝構(gòu)造函數(shù),看看它的內(nèi)部是如何工作的! 上面代碼中的Test(Test &c_t)就是我們自定義的拷貝構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)的名稱必須與類名稱一致,函數(shù)的形式參數(shù)是本類型的一個引用變量,且必須是引用。
【編輯推薦】