我讀過的(在我們的例子_c1
)初始化繼承成員,而不是內源性的構造函數:初始化基類構造函數中的繼承成員如何減少對...的調用?
class A
{
public int _c;
}
class B:A
{
public B(int c)
{
_c = c;
}
}
我們應該對它們進行初始化基類的構造函數內,因爲這樣的話,我們減少繼承成員的電話(_c
):
class A
{
public A(int c)
{
_c = c;
}
public int _c;
}
class B:A
{
public B(int c)
: base(c)
{
}
}
如果_c
字段基構造內部初始化,初始化的順序如下:
1)首先衍生B
類的字段初始被稱爲
2)然後基類A
的字段初始化被稱爲(此時_c
的值被設爲0
)
3)B’s
構造函數被調用,這又呼叫A’s
定製構造
4)_c
字段獲取設置爲一旦A’s
定製構造函數返回一個參數c
(內側A’s
定製構造的值)
5),B’s
構造函數執行它的代碼。
如果_c
字段內B's
構造初始化,初始化的順序如下:
1)首先領域派生B
類的初始化被稱爲
2)然後,基類A
的字段初始化被稱爲(此時_c
的值被設爲0
)
3)B’s
構造函數被調用,後者又調用A’s
默認的構造
4)一旦A’s
定製協nstructor回報,B’s
構造函數設置_c
場參數c
的價值至於我可以告訴大家,在這兩種情況下被_c
調用兩次,所以我們是如何準確地減少對繼承成員_c
電話?
感謝名單
當你有幾個派生類時會發生什麼?派生類的派生類? – Oded 2010-06-17 19:47:50
我不確定我是否理解您要說的內容 – flockofcode 2010-06-17 22:22:10