C 關於繼承 派生類建構函式的問題

2021-10-11 02:48:33 字數 840 閱讀 4466

事出有因:今天看專案**碰到了c# 關鍵字where,我起先想到的是跟資料庫的sql語句一樣的where。我搜了資料後發現該關鍵字和泛型約束有關,於是我又繼續學習關於泛型約束的知識,然後看到關於泛型類繼承的問題。

於是自己就code了一些**:

class

human

public

human

(int i,

int j)

}class

man:

human

}

這樣的**是會報錯的:base class 『delegatetest.human』 doesn』t contain parameterless constructor

報錯:human類沒有無參建構函式

這讓我想到,為什麼宣告和例項的是man,反而基類會報錯,我又搜了一下發現,原來在派生類被初始化時,如果沒有指定執行基類哪乙個建構函式,則會預設執行的是基類的無參建構函式。大概就是例項化派生類的時候會先執行基類的建構函式再執行到自己的建構函式。

注意:基類如果沒有寫無參建構函式,反而寫了有參的建構函式,此時如果派生類寫無參建構函式則會報錯。

下面是派生到孫子類的test code

class

human

public

human

(int i,

int j)

}class

man:

human

}class boy : man

}

c 學習 繼承 派生類的建構函式

1.在派生類中,預設基類的建構函式是不被繼承的,派生類需要構造自己的建構函式。ps 在c 11中,定義可以使用using語句來繼承基類的建構函式。但它不能初始化派生類新增成員。2.派生類建構函式需要完成的任務 不繼承基類建構函式的情況 1 派生類新增成員 派生類定義建構函式初始化 2 繼承來的成員 ...

C 派生類建構函式

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

C 派生類的建構函式

1,在使用建構函式的時候,作為派生類會有某些特殊問題。其根源就是建立派生類的時候會有多個建構函式起作用。2,c 中例項化的類的建構函式本身不能初始化類,還必須呼叫基類的建構函式。3,建構函式的呼叫順序是自上向下的,實際上是編譯器先自下而上的尋找建構函式,然後再自上而下的執行 直到達到要例項化的類為止...