關於繼承的構造,函數的調用

1. 構造函數和析構函數

class Derive : public Base

{

pulic:

    Derive();

   ~Derive();

private:

    int d;

   Member m;

};

 

構造Derive的時候,按照這個順序:基類、成員類、派生類。銷燬則相反。

 

 

2. 繼承的函數調用

公共財產的繼承,編譯器會先在Derive裏找相應的函數,如果找不到,會去他的父類裏面找。

 

拷貝構造函數的“繼承”,其實不是繼承,因爲名字不一樣,一個是Base(Base &), 一個是Derive(Derive &),但某些情況也有類似的效果:就是說,

如果Derive裏沒有定義拷貝構造函數,編譯器默認生成的拷貝構造函數會調用父類的拷貝構造函數。

 

同理,構造函數,和重載=運算符,都是這樣。

如果Derive沒有定義構造函數,編譯器自己生成的構造函數會默認調用父類的構造函數。

 

 So, In conclusion:

- 子類的 構造函數,拷貝構造函數,和 重載=運算符函數,在調用的時候,會依次調用 父類,成員類的對應函數,然後纔會調用派生類的函數。

- 在用子類去調用一般的函數時候(不是構造、析構、拷貝構造、重載=),先在子類中查找響應函數,找不到的話去父類查找。

發佈了26 篇原創文章 · 獲贊 27 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章