C 繼承和組合並存的構造析構原則

2021-10-02 08:08:18 字數 1057 閱讀 9362

當父類建構函式有引數時,需要在子類的初始化列表中顯式呼叫

先構造父類,再構造成員變數(組合),最後構造自己

先析構自己,再析構成員變數(組合),最後析構父類

/*

當父類建構函式有引數時,需要在子類的初始化列表中顯式呼叫

先構造父類,再構造成員變數(組合),最後構造自己

先析構自己,再析構成員變數(組合),最後析構父類

*/#include

using

namespace std;

class

object

object

(const

char

* s)

//沒有預設建構函式

~object()

private:}

;class

parent

:public object

~parent()

private:}

;class

child

:public parent

~child()

private

: object o1;

//組合

object o2;};

void

run(

)int

main()

object

()建構函式 parameter from child!

parent

()建構函式 parameter from child!

object

()建構函式 o1

object

()建構函式 o2

child

()建構函式

~child

()析構函式

~object

()析構函式

~object

()析構函式

~parent

()析構函式

~object

()析構函式

C 繼承和組合混搭下的構造和析構呼叫原則

原則 先構造父類 如果父類還有父類,則先構造父類的父類 再構造成員變數 構造組合類 最後構造自己 先析構自己,再析構成員變數 析構組合類 最後析構父類,如果父類還有父類,繼續析構 父類的父類。示例 祖宗類object,同時也是子類的組合類,父類parent,子類child include using...

C 繼承中構造析構呼叫原則

構造析構呼叫原則 1 子類物件在建立時會首先呼叫父類的建構函式 2 父類建構函式執行結束後,執行子類的建構函式 3 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫 4 析構函式呼叫的先後順序與建構函式相反 案例如下 define crt secure no warnings includ...

C 繼承中的構造和析構

在c 的繼承中,在子類物件構造時,需要呼叫父類建構函式對其繼承來的成員進行初始化,在子類進行析構時,需要呼叫父類的析構函式對其繼承來的成員進行清理,過程如下 1 子類物件在建立時會首先呼叫父類的建構函式 2 父類建構函式執行結束後,執行子類的建構函式 3 當父類的建構函式有引數時,需要在子類的初始化...