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:
- 子類的 構造函數,拷貝構造函數,和 重載=運算符函數,在調用的時候,會依次調用 父類,成員類的對應函數,然後纔會調用派生類的函數。
- 在用子類去調用一般的函數時候(不是構造、析構、拷貝構造、重載=),先在子類中查找響應函數,找不到的話去父類查找。