在C++中,當(dāng)使用繼承時,基類(父類)的構(gòu)造函數(shù)會在派生類(子類)的構(gòu)造函數(shù)體執(zhí)行之前被調(diào)用。這是為了確?;惖某蓡T變量和方法在派生類對象創(chuàng)建時已經(jīng)初始化。
以下是一個簡單的例子,展示了如何在C++中使用繼承和構(gòu)造函數(shù)調(diào)用:
#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; // 當(dāng)創(chuàng)建Derived類的對象時,首先調(diào)用Base類的構(gòu)造函數(shù),然后調(diào)用Derived類的構(gòu)造函數(shù)
return 0;
}
在這個例子中,當(dāng)我們創(chuàng)建一個Derived
類的對象時,首先會調(diào)用Base
類的構(gòu)造函數(shù),然后調(diào)用Derived
類的構(gòu)造函數(shù)。輸出結(jié)果如下:
Base constructor called
Derived constructor called
注意,如果在基類構(gòu)造函數(shù)中調(diào)用了虛函數(shù),那么在派生類構(gòu)造函數(shù)中調(diào)用該虛函數(shù)時,將不會表現(xiàn)出多態(tài)性。這是因為基類構(gòu)造函數(shù)在派生類構(gòu)造函數(shù)之前執(zhí)行,此時派生類的部分尚未初始化。