構造組合類物件時的初始化次序
例項不僅要對本類中的基本型別成員資料賦初值,也要對物件成員初始化。
類名::類名(物件成員所需的形參,本類成員形參):物件1(引數),物件2(引數),…①.首先對建構函式初始化列表中列出的成員(包括基本型別成員和物件成員)進行初始化,初始化次序是成員在類體中定義的次序(成員物件構造函式呼叫順序:按物件成員的宣告順序)
②.處理完初始化列表之後,再執行#建構函式的函式體。
設計乙個crectangle類,其中包括cpoint類的兩個物件成員,表示左上角和右下角的兩個點。要求求解矩形的面積。
【注意】每個類的建構函式、複製建構函式需要輸出「*** is called」,具體的請根據輸出進行分析。
main函式已經給定如下:
int main()
int a=1, b=1, c=6, d=11;
cout<<"# define p1 ######"<【樣例輸出】
#define p1 ######
cpoint contstructor with default value(0,0) is called.
#define p2 ######
cpoint contstructor with default value(0,0) is called.
#define rect1 ######
cpoint contstructor with default value(0,0) is called.
cpoint contstructor with default value(0,0) is called.
crectangle default contstructor is called.
#define rect2 ######
cpoint copy contstructor is called.
cpoint copy contstructor is called.
cpoint copy contstructor is called.
cpoint copy contstructor is called.
crectangle contstructor with (cpoint,cpoint) is called.
#define rect3 ######
cpoint contstructor with default value(0,0) is called.
cpoint contstructor with default value(0,0) is called.
crectangle contstructor with (int,int,int,int) is called.
#define rect4 ######
cpoint copy contstructor is called.
cpoint copy contstructor is called.
crectangle copy contstructor is called.
#calculate area ######
rect1面積為0
rect2面積為200
rect3面積為50
rect4面積為200
#include
#include
//如果不加該標頭檔案,之後system("pause")會報錯
using
namespace std;
class
cpoint
//定義cpoint類
intgety()
};cpoint::
cpoint
(int xx,
int yy)
//建構函式的實現
cpoint::
cpoint
(cpoint &p)
//複製建構函式
cpoint::
cpoint()
//預設建構函式
class
crectangle
//定義
;//組合類的建構函式1
crectangle::
crectangle
(cpoint xp1,cpoint xp2):p1
(xp1),p2
(xp2)
//組合類的建構函式2
crectangle::
crectangle
(int x1,
int y1,
int x2,
int y2):p1
(x1,y1),p2
(x2,y2)
//組合類的複製建構函式
crectangle::
crectangle
(crectangle &rec):p1
(rec.p1),p2
(rec.p2)
//組合類的預設建構函式
crectangle::
crectangle()
int crectangle::
getarea()
intmain()
C 類的組合
c 中類的組合 c 中,乙個類包含另乙個類,它的建構函式的執行順序可以說是難點也是重點,最近抽空學習了下,總結如下 先拿何潔月教授上課的例子說明 class point 函式的實現 class distance 類宣告 函式的實現 類組合的建構函式設計 原則 不僅要對本類中的基本型別成員資料賦初值,...
C 類的組合
1 組合 乙個大類中包含很多子類 class funa class funb class fun 2 組合類的建構函式 當給乙個組合類傳引數時,同時要給子類傳參。關鍵要理解為什麼這麼做?一般情況下,資料成員會定義為類的私有成員,那麼函式成員需要用到本類的私有成員,實現某些功能,外部無法改變,那麼就需...
C 類的組合
在類中定義的資料成員一般都是基本資料型別或服復合資料型別。但是還可以根據需要使用 其他類的物件作為正在宣告的資料成員。複雜的物件還可以有比較簡單的物件一某種方式組合 而成,複雜物件和組成它的簡單物件之間的關係是組合關係。在乙個類中內嵌另乙個類的物件作為資料成員,稱為類的組合。該內嵌物件稱為物件成員,...