c 類構造順序

2021-06-10 02:01:27 字數 665 閱讀 5193

#include

using namespace std;

class a

結果和分析:

a          //1 父類a的建構函式

a         //2 父類b中a的建構函式

a         //3 父類b中成員變數b初始化 (呼叫父類a的建構函式)

b         //4  父類b中成員變數b初始化 (呼叫父類b的建構函式)

a        //5   c中成員變數b 的構造ab

a         //6 c中成員變數a的構造

c         //7 c的建構函式最後呼叫 (finally ,-__-|||)

~c~a

~b~a

~a~b

~a~a

~a***********************************=

綜上可以看出,1~4 按照在派生表中的出現次序進行初始化,首先呼叫父類的建構函式

5, 6 呼叫 成員變數的建構函式

7 呼叫自身的建構函式

ps:更複雜的情況,可以試下虛繼承。

在有虛繼承和一般繼承存在的情況下,優先虛繼承

例如class c: public b, virtual public a

則先呼叫a的建構函式,再呼叫b的建構函式

c 類構造順序

include using namespace std class a 結果和分析 a 1 父類a的建構函式 a 2 父類b中a的建構函式 a 3 父類b中成員變數b初始化 呼叫父類a的建構函式 b 4 父類b中成員變數b初始化 呼叫父類b的建構函式 a 5 c中成員變數b 的構造ab a 6 c中...

c 類的構造順序

在單繼承的情況下,父類構造先於子類,子類析構先於父類,例 class a a class b public a b 結果為 ab b a 在多繼承的情況下,此時的構造順序在滿足單繼承構造順序要求的情況下,出現了兩個同級父類的構造順序問題。在這個時候,對於同級父類,構造順序是根據繼承列表從左往右的。析...

C 派生類物件構造順序

構造依如下順序 1.呼叫本類的基類的建構函式 1.1 按照基類成員定義順序對每個成員執行初始化 1.2 執行基類建構函式體 2.呼叫本類的建構函式 2.1 按照本類成員定義順序引用初始化列表對每個成員執行初始化 2.2 執行本類建構函式體 總結為一句 首先初始化本類的基類部分,然後按照宣告的順序依次...