C 建構函式的繼承問題

2021-07-05 04:47:10 字數 962 閱讀 5542

一、基類沒有定義建構函式的情況

1、派生類也可以不定義建構函式,全部採用預設的建構函式,此時,派生類新增成員的初始化工作可以用其他公有函式來完成。

2、如果只有派生類定義建構函式,只需要構造派生類物件即可,物件的基類部分使用預設建構函式來自動建立

二、基類中存在建構函式

1、基類中存在不帶引數的建構函式。如果基類定義了建構函式,而且該建構函式沒有引數,那麼它可以隱式的被繼承,也就是說,派生類根本不需要建構函式。例子如下:

namespace test1

}public class childclass : baseclass

class program}

} 執行結果:

基類的建構函式被繼承

從執行結果看,派生類繼承了基類的建構函式,此時派生類不需要包含建構函式

2、基類中存在帶引數的建構函式。如果基類定義了帶有引數的建構函式,則此建構函式必須被繼承且在派生類中實現建構函式。同時提供乙個將引數傳遞給基類建構函式的途徑,以便在基類進行初始化時能獲得必需的資料,在實現建構函式時使用base關鍵字,例子如下:

namespace test1

,y = 兩數和為", x, y, result);

console.writeline();}}

public class childclass : baseclass

y = 兩數的積為:", x, y, result);}}

class program}

} 執行結果:

基類建構函式中的內容

x = 5,y = 6兩數和為

派生類建構函式中的內容

x = 5 y = 6兩數的積為:

解析:派生類隱式的繼承基類中不帶引數的建構函式,上面的**中基類定義了帶有引數的建構函式,在其派生類中被繼承,並使用base關鍵字傳遞引數。可以從執行結果中看到在建立派生類的物件後,程式首先執行的是基類的構造函中的內容,然後才是派生類的內容。

C 繼承中的建構函式問題

c 的繼承是不會整合建構函式的,但是子類在實現建構函式時會預設呼叫父類中的無參建構函式 想要不呼叫就要在子類中進行一些特殊操作 class program class person public person 子類需要呼叫父類的無參建構函式 public string name public int...

C 建構函式的繼承

一 基類沒有定義建構函式的情況 1 派生類也可以不定義建構函式,全部採用預設的建構函式,此時,派生類新增成員的初始化工作可以用其他公有函式來完成。2 如果只有派生類定義建構函式,只需要構造派生類物件即可,物件的基類部分使用預設建構函式來自動建立 二 基類中存在建構函式 1 基類中存在不帶引數的建構函...

c 繼承的建構函式

子類為完成基類初始化,在c 11之前,需要在初始化列表呼叫基類的建構函式,從而完成建構函式的傳遞。如果基類擁有多個建構函式,那麼子類也需要實現多個與基類建構函式對應的建構函式。class base base char c m c c m value 0 private intm value char...