c 物件初始化中各構造器的順序

2022-06-30 01:42:10 字數 683 閱讀 8747

c++中,類只是聲名,而在定義這個類的物件時,如果這個類是繼承的,或者這個物件裡面還有其他的物件,各個構造器的執行順序是怎麼樣的。

先放結論:

順序:1.基類的constructor。2.initialize list(構造器圓括號加冒號)。3.其他物件的constructor。4.自己的constructor。

證明:

#includeusing

namespace

std;

class

a a(

inti)

};classb};

class c:public

a

};int

main()

構建了三個類:a,b,c, 其中c繼承了a,a的物件a和b的物件b為c的乙個成員函式,我們用initialize list 初始化a。同時比較三個初始化的順序。

結果:

a:a()。是基類的default constructor,第一出現表明基類的初始化應該是第一。

a:a(10)。是initialize list 的初始化,表明第二。

b:b()。是其他類的物件。第三。

c:c()。是自己的constructor 第四。

c 中物件的初始化順序

在c 中乙個物件建立時按怎樣的順序初始化呢,下例 說明一切。using system class base public base class subclass base public subclass class classmembertype public classmembertype str...

c 物件初始化順序

c 物件初始化 1.先變數後建構函式。變數先被初始化 然後建構函式被執行 2.先靜態化後例項化。當乙個類被訪問時 靜態變數和建構函式最先被初始化 接著是物件的例項化變數和建構函式被初始化 3.先派生類後基類。對於變數和靜態建構函式 派生物件在基物件之前被初始化.比如 c類派生自b類 b類派生自a類 ...

C 物件的初始化順序

當構造乙個c 物件時,理解物件的字段和建構函式的順序是非常重要的 derived static fields 派生類靜態字段 derived static constructor 派生來靜態建構函式 derived instance fields 派生類例項字段 base static fields...