C 基礎 派生類的建構函式與析構函式呼叫順序

2021-07-15 08:29:43 字數 1090 閱讀 7633

派生類的建構函式與析構函式呼叫順序:

派生類的建構函式的定義形式為:

派生類名::派生類名(引數總表):基類名1(參數列1),基類名2(參數列2),成員物件名1(成員物件參數列1),成員物件名2(成員物件參數列2)

//所列出的成員物件名全部為新增成員物件的名字

在建構函式的宣告中,冒號及冒號以後部分必須略去。

冒號後的基類名,成員物件名的次序可以隨意,這裡的次序與呼叫次序無關。

析構函式的呼叫與建構函式相反。

#include using namespace std;

class base1

{public:

base1(int d1):data1(d1)

{cout<<"create base1"<

派生類建構函式各部分的執行次序為:

1.呼叫基類建構函式,按它們在派生類定義的先後順序,順序呼叫。 

2.呼叫成員物件的建構函式,按它們在類定義中宣告的先後順序,順序呼叫

3.派生類的建構函式體中的操作。

create base1    //1.

create base2

create base3

create base3    //2.

create base2

create base1

create d        //3.

free d

free base1

free base2

free base3

free base3

free base2

free base1

注意:

*在派生類建構函式中,只要基類不是使用預設建構函式都要顯式給出基類名和參數列。

*如果基類沒有定義建構函式,則派生類也可以不定義,全部採用系統給定的預設建構函式。

*如果基類定義了帶有形參表的建構函式時,派生類就應當定義建構函式。

派生類的建構函式與析構函式

派生類的建構函式的定義形式為 派生類名 派生類名 引數總表 基類名1 引數名錶1 基類名2 引數名錶2 基類名n 引數名錶n 成員物件名1 成員物件引數名錶1 成員物件名m 成員物件引數名錶m 所列出的成員物件名全部為新增成員物件的名字 本例只是為了演示派生類的定義與使用,盡可能顧及最常用的各方面。...

詳解派生類建構函式與析構函式

1.派生類建構函式 派生類不能繼承基類的建構函式,必須自己定義建構函式進行新增資料成員初始化工作,如果想同時初始化基類資料成員,必須呼叫基類建構函式。1 簡單派生類建構函式 1 include 2 3 include 4 5 using namespace std 6 7 8 9 class st1...

C 派生類的構造和析構函式

派生類的目的是為了發展,派生類繼承了積累的成員,實現了原有 的重用,這只是一部分 而 的擴充才是最主要的,只有通過新增新的成員,加入新的功能,類的派生才有實際意義。派生類的建構函式只負責對新增的成員進行初始化,對所有從基類 繼承來的成員,其初始化工作還是由基類的建構函式完成。同樣,對派生類物件的掃尾...