C 中,為什麼派生類的建構函式如果沒有提供基類的初始化器

時間 2021-09-04 03:24:51

1樓:a774888179巨蟹

c++中成員變數的初始化是在進入建構函式體之前的,如果你需要初始化一個派生類物件,先會呼叫基類的建構函式,然後為初始化列表中的派生類成員變數進行初始化,如果你的部分或全部的成員變數選擇在函式體內賦值,那麼編譯器會先為這些成員變數進行預設的初始化(呼叫其預設建構函式)然後使用copy assignment操作符為成員變數賦值。所以儘量使用初始化列表效率會更高。當然對於你的第二個問題,原因是派生類不能呼叫基類的private成員,所以如果你相對基類的私有成員初始化的話,就只能在初始化列表中呼叫其建構函式。

2樓:輝じov☆恆

這和你宣告的物件有關 如果你宣告的物件是派生類物件,你宣告的物件將直接到派生類中找建構函式,而不是到其他類中找,它也不會自己到其他類中找,除非你在派生類中呼叫了基類的建構函式.一般要是派生類中沒給出對基類建構函式的呼叫,它就會生成對無引數基類建構函式的自動呼叫.如果你明白為什麼要在派生類中呼叫基類的建構函式就可以理解了

如果你宣告的物件是基類,它毫無疑問會呼叫和它相符的建構函式不用謝

你的話我不是很明白

我只能說 在建構函式中 對基類的呼叫是要用初始化列表 而對派生類的成員是可以用初始化列表 也可以在函式裡直接初始化

至於我這麼說的原因我也不是很清楚

c++為何無法用指標引用這些派生類成員函式

3樓:育知同創教育

參考下面**

#include

using namespace std;

struct param;

struct circleparam:public param;

class point

virtual void print()

C 中派生類的建構函式怎麼顯式呼叫基類建構函式

子類構造的時候會自動呼叫基類的建構函式 並且是有順序的呼叫完建構函式的順序 基類 子類 子子類 不僅建構函式 析構函式也這樣 子類物件析構時自動呼叫基類的析構函式順序與建構函式順序相反 子類.基類 關於顯示呼叫基類的建構函式,是不可行的。必須用初始化表的形式呼叫基類建構函式,才能正確的把子類繼承下來...

VC 中為什麼要用類 包括派生類,為什麼要派生

這個問題說起來挺複雜的,不過值得慶幸的是,在大多數c 語言教材裡,都有明確的闡述,如 the c programming language c how to program 建議你看一下。如果不太方便,我也很樂意闡述一下我的理解,因為不想複製網上的,有欺騙樓主的感覺。舉個例子,建立一個基類 shap...

C派生類指標指向基類物件,C 中基類指標指向派生類物件可以呼叫派生類的新增成員麼

需要知道一些常識,乙個類所有的函式都是再code 區中唯一的存放乙份。而資料成員則是每個物件儲存乙份,並按照宣告順序依次存放。類a中有了虛函式就會再類的資料成員的最前面新增乙個vfptr指標 void vfptr 這個指標用來指向乙個vtable表 乙個函式指標陣列 乙個類只有乙個該錶 該錶儲存著當...