C 派生類的建構函式

2021-05-12 12:36:26 字數 603 閱讀 9814

1,在使用建構函式的時候,作為派生類會有某些特殊問題。其根源就是建立派生類的時候會有多個建構函式起作用。

2,c#中例項化的類的建構函式本身不能初始化類,還必須呼叫基類的建構函式。

3,建構函式的呼叫順序是自上向下的,(實際上是編譯器先自下而上的尋找建構函式,然後再自上而下的執行)

直到達到要例項化的類為止,在此過程中,每乙個建構函式都初始化它們自己的類中的字段。

用乙個簡單例子說明這一問題

4,正是基於這樣一種順序(基類的建構函式最先被呼叫),

派生類的建構函式可以在執行的過程中掉用它可以訪問的基類方法啊,屬性和其他成員

5,另外我們還可以這樣定義childclass的建構函式,結果一致。base不帶引數   

實際上,編譯器會自動呼叫基類中的不帶引數的建構函式,而我們一旦為類定義了建構函式,

無論是否帶有引數,那麼類都不會再自動生成預設的建構函式,

所以這個時候我們就要自己寫這個預設的不帶引數的建構函式,

或者我們通過給base傳遞引數來告訴編譯器指定基類的建構函式。見下例

7, 不能把基類的建構函式定義為private

見下例,由於無法訪問基類不帶參的建構函式,編譯時也會報錯

C 派生類建構函式

派生類構造函式呼叫順序 1.基類的建構函式.2.子物件類的建構函式.3.派生類建構函式.當物件被刪除時,派生類的析構函式被執行,由於析構函式也不能被繼承,因此在執行派生類的析構函式時,基類的析構函式也會被呼叫。先執行派生類的析構函式,再執行子物件類的析構函式,再執行基類的建構函式。include u...

C 派生類的建構函式

基類的建構函式不能被繼承,在宣告派生類時,對繼承過來的成員變數的初始化工作也要由派生類的建構函式來完成。所以在設計派生類的建構函式時,不僅要考慮派生類新增的成員變數,還要考慮基類的成員變數,要讓它們都被初始化。解決這個問題的思路是 在執行派生類的建構函式時,呼叫基類的建構函式。下面的例子展示了如何在...

C 派生類的 建構函式

問題 希望執行派生類的建構函式時,使派生類的資料成員和基類的資料成員同時初始化 方案 在執行派生 類建構函式時,呼叫基類建構函式 一般形式 派生類建構函式名 總參數列列 基類建構函式名 參數列列 include include using namespace std class student 宣告...