c++中,類只是聲名,而在定義這個類的物件時,如果這個類是繼承的,或者這個物件裡面還有其他的物件,各個構造器的執行順序是怎麼樣的。
先放結論:
順序:1.基類的constructor。2.initialize list(構造器圓括號加冒號)。3.其他物件的constructor。4.自己的constructor。
證明:
#includeusing構建了三個類:a,b,c, 其中c繼承了a,a的物件a和b的物件b為c的乙個成員函式,我們用initialize list 初始化a。同時比較三個初始化的順序。namespace
std;
class
a a(
inti)
};classb};
class c:public
a
};int
main()
結果:
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...