在C++中,基類(base class)是一個類,它可以被其他類繼承。當一個類繼承了基類時,它會獲得基類的屬性和方法。基類的構造函數和析構函數在派生類(derived class)的對象創建和銷毀過程中起著重要作用。
基類的構造函數在派生類對象創建時被調用。它負責初始化基類的成員變量。如果派生類沒有顯式地調用基類的構造函數,編譯器會自動調用基類的默認構造函數(無參數的構造函數)。如果基類沒有默認構造函數,派生類必須顯式地調用基類的構造函數并傳遞相應的參數。
示例:
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;
}
基類的析構函數在派生類對象銷毀時被調用。它負責清理基類的資源。與構造函數類似,如果派生類沒有顯式地調用基類的析構函數,編譯器會自動調用基類的析構函數。
示例:
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;
}
注意:在實際編程中,為了確保正確的資源管理,建議將基類的析構函數聲明為虛函數(virtual)。這樣,當通過基類指針刪除派生類對象時,派生類的析構函數也會被調用,從而避免資源泄漏。