學習子類的構造和析構順序

2022-08-30 07:39:09 字數 800 閱讀 2378

1 建構函式不能是虛函式

2 當析構函式不是虛函式時:父指標子物件時:構造是父—>子,析構是父;

3 當析構函式不是虛函式時:子指標子物件時:構造是父—>子,析構是子—>父;

4 當析構函式是虛函式時:父指標子物件時:構造是父—>子,析構是子—>父;

5 構造和析構函式中的虛函式都不能觸發多型行為。

**:

1 #include 23/*

*4* @author:zanzan1015*/

6classa7

13virtual ~a()

17virtual

void

todo()

1821

};22

class b: publica23

29virtual ~b()

33void

todo()

3437

};38

39int

main()

40

輸出:

>>父指標子物件

aca: todo

bcb: todo

----------

b: todo

----------

bdb: todo

ada: todo

>>子指標子物件

aca: todo

bcb: todo

----------

b: todo

----------

bdb: todo

ada: todo

請按任意鍵繼續. . .

子類的析構順序

派生類的析構函式的功能是在該物件消亡之前進行一些必要的清理工作,析構函式沒有型別,也沒有引數。析構函式的執行順序與建構函式相反,無需指明析構關係,因為析構函式只有一種,無過載,無默參 析構順序 子類 成員 基類 include stdafx.h include using namespace std...

C 多個物件構造 析構 構造和析構的順序

include 多個物件構造和析構 1 當類中有成員變數是其它類的物件時,首先呼叫成員變數的建構函式,呼叫順序與宣告順序相同 之後呼叫自身類的建構函式 2 析構函式的呼叫順序與對應的構造函式呼叫順序相反 2 類成員中若有const修飾,必須在物件初始化的時候,給const int n 賦值 當類成員...

C 子類呼叫父類構造和析構函式的順序

include using namespace std class a class b public a int main 列印的結果是 construct a a construct b b destruct a a 一般情況下構造函式呼叫父類 子類 析構函式呼叫子類 父類 比如這麼寫 b a n...