溫馨提示×

c++ base類的構(gòu)造函數(shù)和析構(gòu)函數(shù)

c++
小樊
90
2024-09-04 18:34:17
欄目: 編程語言

在C++中,基類(base class)是一個類,它可以被其他類繼承。當一個類繼承了基類時,它會獲得基類的屬性和方法。基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)在派生類(derived class)的對象創(chuàng)建和銷毀過程中起著重要作用。

  1. 構(gòu)造函數(shù):

基類的構(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;
}
  1. 析構(gòu)函數(shù):

基類的析構(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)用,從而避免資源泄漏。

0