在C++中,當使用繼承時,基類(父類)的構造函數會在派生類(子類)的構造函數體執行之前被調用。這是為了確保基類的成員變量和方法在派生類對象創建時已經初始化。
以下是一個簡單的例子,展示了如何在C++中使用繼承和構造函數調用:
#include <iostream>
// 基類
class Base {
public:
Base() {
std::cout << "Base constructor called" << std::endl;
}
};
// 派生類
class Derived : public Base {
public:
Derived() {
std::cout << "Derived constructor called" << std::endl;
}
};
int main() {
Derived d; // 當創建Derived類的對象時,首先調用Base類的構造函數,然后調用Derived類的構造函數
return 0;
}
在這個例子中,當我們創建一個Derived
類的對象時,首先會調用Base
類的構造函數,然后調用Derived
類的構造函數。輸出結果如下:
Base constructor called
Derived constructor called
注意,如果在基類構造函數中調用了虛函數,那么在派生類構造函數中調用該虛函數時,將不會表現出多態性。這是因為基類構造函數在派生類構造函數之前執行,此時派生類的部分尚未初始化。