1.在派生類中,預設基類的建構函式是不被繼承的,派生類需要構造自己的建構函式。
ps:在c++11中,定義可以使用using語句來繼承基類的建構函式。但它不能初始化派生類新增成員。
2.派生類建構函式需要完成的任務(不繼承基類建構函式的情況)
(1)派生類新增成員:派生類定義建構函式初始化;
(2)繼承來的成員:c++會自動呼叫基類建構函式進行初始化;
(3)派生類的建構函式 需要給基類的建構函式傳遞引數。
3.派生類建構函式與基類建構函式的聯絡
(1)當基類有預設建構函式時,派生類建構函式可以不向基類建構函式傳遞引數。
構造派生類的物件時,基類的預設無參建構函式將被呼叫。
(2) 如需執行基類中帶引數的建構函式,派生類建構函式應為基類建構函式提供引數。
4.單繼承建構函式
派生類名::派生類名(基類所需的形參,本類成員所需的形參) : 基類名(參數列),本類成員初始化列表
{ //其他初始化;
4.多繼承且有物件成員時派生的建構函式定義語法
派生類名:派生類名(形參表):基類名1(引數),基類名2(引數),……基類名n(引數),本類成員(含物件成員)初始化列表;
5.建構函式的執行順序
1.呼叫基類建構函式。順序按照它們被繼承時宣告的順序(從左向右)。
2.對初始化列表中的成員進行初始化。
順序按照它們在類中定義的順序。
物件成員初始化時自動呼叫其所屬類的建構函式,由初始化列表提供引數。
3.執行派生類的建構函式體中的內容。
#include "stdafx.h"
#include //#include using namespace std;
class base1
};class base2
};class base3
};class derived :public base2, public base1, public base3
//建構函式執行順序與這個順序無關
private: // 派生類的私有成員物件
C 派生類建構函式
派生類構造函式呼叫順序 1.基類的建構函式.2.子物件類的建構函式.3.派生類建構函式.當物件被刪除時,派生類的析構函式被執行,由於析構函式也不能被繼承,因此在執行派生類的析構函式時,基類的析構函式也會被呼叫。先執行派生類的析構函式,再執行子物件類的析構函式,再執行基類的建構函式。include u...
C 派生類的建構函式
1,在使用建構函式的時候,作為派生類會有某些特殊問題。其根源就是建立派生類的時候會有多個建構函式起作用。2,c 中例項化的類的建構函式本身不能初始化類,還必須呼叫基類的建構函式。3,建構函式的呼叫順序是自上向下的,實際上是編譯器先自下而上的尋找建構函式,然後再自上而下的執行 直到達到要例項化的類為止...
C 派生類的建構函式
基類的建構函式不能被繼承,在宣告派生類時,對繼承過來的成員變數的初始化工作也要由派生類的建構函式來完成。所以在設計派生類的建構函式時,不僅要考慮派生類新增的成員變數,還要考慮基類的成員變數,要讓它們都被初始化。解決這個問題的思路是 在執行派生類的建構函式時,呼叫基類的建構函式。下面的例子展示了如何在...