c 組合類的構造,複製構造,析構順序

2021-06-21 13:51:06 字數 1433 閱讀 9448

先貼**:

#include using namespace std;

class cat

{public:

cat (int intialage):

catage(intialage)

{cout<

餘童蘭上課習題,被點名回答,沒答案上來

有兩個類 cat和 dog ;zoo乙個組合類,包含cat和dog ,各有 構造,複製構造,析構函式。問輸出結果是什麼

答案:

cat cons        cat fri(1)的構造

cat copy       cat dlo(fri) 複製構造

dog cons      dog tom(4) 構造

zoo hy(fri,tom,6)的分析:

形參的執行順序為從左到右,因此先進行dog的複製構造;

按照成員定義的順序進行初始化,cat先定義,則它先進行複製構造;

cat a,dog b為形參,用完即銷毀,因為先構造的dog,於是先銷毀cats,棧的後進先出。

dog copy       dog b=tom

cat copy        cat a=fri

cat copy         zoocat(a)

dog copy     zoodog(b)

zoo con      zoo 構造好了

cat des       銷毀臨時 a

dog des     銷毀臨時 b

zoo cs(hy);的分析

cat copy

dog copy

zoo copy

zoo cs(hy);的銷毀

zoo des

dog des

cat des

zoo hy(fri,tom,6)的銷毀

zoo des

dog des

cat des

cat fri(1);cat dlo(fri); dog tom(4);的銷毀

dog des

cat des

cat des

正確順序,總計22個

cat cons

cat copy

dog cons

dog copy

cat copy

cat copy

dog copy

zoo con

cat des

dog des

cat copy

dog copy

zoo copy

zoo des

dog des

cat des

zoo des

dog des

cat des

dog des

cat des

cat des

c 構造 析構順序

在建立class a的乙個物件的時候,拿new運算子來說,他總是會先去請求一塊該物件期望大小的記憶體,然後呼叫class a的建構函式並傳入所申請記憶體的位址作為this指標完成構造。如果class a有其他類型別的成員變數,或者繼承自其他類的話,他們的構造順序又會是怎樣的呢?下邊是測試 class...

C 類構造與析構順序

1.虛基類建構函式被呼叫,以繼承順序從左到右 如果存在虛基類 2.上一層非虛基類建構函式被呼叫,以繼承順序從左到右而非成員初值列上寫的順序 顯示呼叫或缺省構造 如果存在非虛基類 3.虛表指標指向適當虛表 如果類存在虛表指標 4.類資料成員初始化,以宣告的順序而非成員初值列上寫的順序。5.執行使用者所...

Vector 構造,複製構造,析構

建構函式 建構函式 vector int c default capacity,int s 0,t v 0 容量為c 規模為s 所有元素初始為v s c複製建構函式 從a陣列中為 lo,hi 的左閉右開區間複製資料到vector物件 template 元素型別 void vector copyfro...