C 類的組合

2021-06-14 03:08:11 字數 1401 閱讀 6418

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 ...