在C++中,基類(base class)是一個類,它可以被其他類繼承。當一個類繼承了基類時,它會獲得基類的屬性和方法。基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)在派生類(derived class)的對象創(chuàng)建和銷毀過程中起著重要作用。
基類的構(gòu)造函數(shù)在派生類對象創(chuàng)建時被調(diào)用。它負責初始化基類的成員變量。如果派生類沒有顯式地調(diào)用基類的構(gòu)造函數(shù),編譯器會自動調(diào)用基類的默認構(gòu)造函數(shù)(無參數(shù)的構(gòu)造函數(shù))。如果基類沒有默認構(gòu)造函數(shù),派生類必須顯式地調(diào)用基類的構(gòu)造函數(shù)并傳遞相應的參數(shù)。
示例:
class Base {
public:
Base() {
cout << "Base constructor called."<< endl;
}
};
class Derived : public Base {
public:
Derived() {
cout << "Derived constructor called."<< endl;
}
};
int main() {
Derived d; // 輸出:Base constructor called. Derived constructor called.
return 0;
}
基類的析構(gòu)函數(shù)在派生類對象銷毀時被調(diào)用。它負責清理基類的資源。與構(gòu)造函數(shù)類似,如果派生類沒有顯式地調(diào)用基類的析構(gòu)函數(shù),編譯器會自動調(diào)用基類的析構(gòu)函數(shù)。
示例:
class Base {
public:
~Base() {
cout << "Base destructor called."<< endl;
}
};
class Derived : public Base {
public:
~Derived() {
cout << "Derived destructor called."<< endl;
}
};
int main() {
Derived* d = new Derived();
delete d; // 輸出:Derived destructor called. Base destructor called.
return 0;
}
注意:在實際編程中,為了確保正確的資源管理,建議將基類的析構(gòu)函數(shù)聲明為虛函數(shù)(virtual)。這樣,當通過基類指針刪除派生類對象時,派生類的析構(gòu)函數(shù)也會被調(diào)用,從而避免資源泄漏。