C 類的組合

2021-09-07 03:21:32 字數 2045 閱讀 4130

在類中定義的資料成員一般都是基本資料型別或服復合資料型別。但是還可以根據需要使用

其他類的物件作為正在宣告的資料成員。複雜的物件還可以有比較簡單的物件一某種方式組合

而成,複雜物件和組成它的簡單物件之間的關係是組合關係。

在乙個類中內嵌另乙個類的物件作為資料成員,稱為類的組合。該內嵌物件稱為物件成員,也稱為

子物件。例如:

class a

; class b

;當建立類的物件時,如果這個類具有內嵌物件成員,那麼內嵌物件成員也將被自動建立,因此,

在建立物件時既要對本類的基本資料成員初始化,又要對內嵌的物件成員進行初始化。含有物件

成員的類,其建構函式和不含物件成員的建構函式有所不同,例如有以下的類x:

class x;

一般來說,類x的建構函式的定義形式為:

x::x(形參表0):物件成員1(形參表1),物件成員2(形參表2),物件成員3(形參表3),....

其中,"物件成員1(形參表1),物件成員2(形參表2),物件成員3(形參表3),...."稱作初始化表,其作用

是對物件成員進行初始化。

當呼叫建構函式x::x()時,首先按各內嵌物件成員在類宣告中的順序依次呼叫他們的建構函式,對這些

物件初始化。最後在執行類x的建構函式體,初始化類x的其他成員。析構函式的呼叫順序與建構函式的

呼叫順序相反。

例:  物件成員的初始化

#includeusing

namespace

std;

class a

void

show()

private

:

intx;

float

y;

}; class b

void

show()

private

: a a;

//類a的物件a為類b的物件成員

intz;

};int

main()

需求:定義學生類和成績類,將student類的成員score作為成績類的乙個物件 ,然後用初始化

列表進行初始化。

例 :物件成員的應用

#include#include

using

namespace

std;

class score;

score::score(

float m,float l,float e) //

定義建構函式

void

score::show()

class student;

student::student(

char* n,char* s,float m,float l,float e):sco(m,l,e) //

定義建構函式

student::~student()

void

student::show()

intmain()

從上面的程式可以看出,類student的show函式中對於物件成員sco的處理方式就是通過呼叫類score的show函式

來實現的。

說明:1、宣告含有物件的類,首先要建立物件成員。本例在宣告類studet中,定義了物件成員sco;

score sco;

2、在定義類student的物件,呼叫建構函式進行初始化的同時,也要對物件成員進行初始化,因為它

屬於此類的成員。因此在寫類student的建構函式時,也綴上了物件成員sco要呼叫類score的構造

函式。student::student(char* n,char* s,float m,float l,float e):sco(m,l,e){}

這時建構函式的呼叫順序是:先呼叫物件成員sco的建構函式,對物件成員的資料成員進行初始化。

隨後再執行類student的建構函式的函式體,對派生類資料成員進行初始化。

注意:在定義類student的建構函式時,必須綴上物件成員的名字sco,而不能綴上類名。。。

C 類的組合

c 中類的組合 c 中,乙個類包含另乙個類,它的建構函式的執行順序可以說是難點也是重點,最近抽空學習了下,總結如下 先拿何潔月教授上課的例子說明 class point 函式的實現 class distance 類宣告 函式的實現 類組合的建構函式設計 原則 不僅要對本類中的基本型別成員資料賦初值,...

C 類的組合

1 組合 乙個大類中包含很多子類 class funa class funb class fun 2 組合類的建構函式 當給乙個組合類傳引數時,同時要給子類傳參。關鍵要理解為什麼這麼做?一般情況下,資料成員會定義為類的私有成員,那麼函式成員需要用到本類的私有成員,實現某些功能,外部無法改變,那麼就需...

C 學習筆記20 類的組合

定義 乙個類內嵌其他類的物件作為成員的情況,他們之間的關係是一種包含與被包含的關係。組合類的建構函式設計 當建立類的物件時,如果這個類具有內嵌物件成員,那麼各個內嵌函式物件將首先被自動建立。在建立物件時既要對本類的基本型別資料成員進行初始化,又要對內嵌物件進行初始化。類名 類名 形參表 內嵌物件1 ...