我剛纔讀的this answer,如果你有下面的代碼班級成員初始化的順序是什麼?
class Base
{
public Base()
{
}
}
class One : Base
{
string test = "text";
}
class Two : Base
{
string test;
public Two()
{
test = "text";
}
}
一個類initializaton One.test將基地前initalized ::基地之稱。但是,在調用Base :: Base之後,Two.test將被初始化。
我想這是因爲在這兩種情況下,它是
- 領域< - 這包括One.test
- 基地:: Base的()
- 一::一()或二::兩個()< - 初始化Two.test
我想我記得初始化列表只是在構造函數之前。 所以是初始化命令即可:
- 領域
- 基地初始化列表
- 基構造
- 自己的初始化列表
- 自己的構造
哪裏做基礎領域進來?當分配內存時或者在當前基類的初始化列表之前,是否所有字段都是初始化的?
在列表中您還可以想到其他步驟嗎?
如果有人能給出一個好的概述,我將不勝感激。
那麼你是如何連接使用C++一個C#的答案嗎? – 0x499602D2
完全錯過了。那麼,我仍然想知道它在C++中的工作原理。 – Sarien
已編寫的代碼在C++中無效。 – deepmax