先貼**:
#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...