c++中類的組合
c++中,乙個類包含另乙個類,它的建構函式的執行順序可以說是難點也是重點,最近抽空學習了下,總結如下:
先拿何潔月教授上課的例子說明:
class point
;//...函式的實現
class distance//類宣告 };
//...函式的實現
※類組合的建構函式設計
原則:不僅要對本類中的基本型別成員資料賦初值,也要對物件成
員初始化。
宣告形式:
類名::類名(物件成員所需的形參,本類成員的形參):
物件1(引數),物件2(引數),……
point(int xx=0,int yy=0)
distance::distance(point a,point b):p1(a),p2(b)
※類組合的構造函式呼叫
×構造函式呼叫的順序:先呼叫內嵌物件的建構函式(按內嵌時
類的宣告順序,先宣告者先構造)。然後呼叫本類的建構函式。
(析構函式的呼叫順序相反)
×若呼叫預設建構函式(即無形參),則內嵌物件的初始化也將調
用相應的預設建構函式。
#include
#include
using namespace std;
class point
point(point &p)
float getx(void)
float gety(void)};
class distance};
distance::distance(point a,point b):p1(a),p2(b)
void main()
{ point myp1(1,1),myp2(4,5);
distance myd(myp1, myp2);
cout<<"the distance is: ";
cout<
執行順序:
point建構函式 注釋:構造myp1
point建構函式 注釋:構造myp2
point拷貝建構函式 注釋:將實參myp1傳遞給point a,執行拷貝建構函式
point拷貝建構函式 注釋:將實參myp2傳遞給point b,執行拷貝建構函式
point拷貝建構函式 注釋:用point a拷貝構造p1,執行拷貝建構函式
point拷貝建構函式 注釋:用point b拷貝構造p2,執行拷貝建構函式
distance建構函式 注釋:執行distance的建構函式
結果:the distance is: 5
C 類的組合
1 組合 乙個大類中包含很多子類 class funa class funb class fun 2 組合類的建構函式 當給乙個組合類傳引數時,同時要給子類傳參。關鍵要理解為什麼這麼做?一般情況下,資料成員會定義為類的私有成員,那麼函式成員需要用到本類的私有成員,實現某些功能,外部無法改變,那麼就需...
C 類的組合
在類中定義的資料成員一般都是基本資料型別或服復合資料型別。但是還可以根據需要使用 其他類的物件作為正在宣告的資料成員。複雜的物件還可以有比較簡單的物件一某種方式組合 而成,複雜物件和組成它的簡單物件之間的關係是組合關係。在乙個類中內嵌另乙個類的物件作為資料成員,稱為類的組合。該內嵌物件稱為物件成員,...
C 學習筆記20 類的組合
定義 乙個類內嵌其他類的物件作為成員的情況,他們之間的關係是一種包含與被包含的關係。組合類的建構函式設計 當建立類的物件時,如果這個類具有內嵌物件成員,那麼各個內嵌函式物件將首先被自動建立。在建立物件時既要對本類的基本型別資料成員進行初始化,又要對內嵌物件進行初始化。類名 類名 形參表 內嵌物件1 ...