溫馨提示×

C++繼承機(jī)制的析構(gòu)順序如何

c++
小樊
82
2024-11-08 23:44:25
欄目: 編程語言

在C++中,繼承機(jī)制的析構(gòu)順序與對象的構(gòu)造順序相反。當(dāng)一個類對象被銷毀時,它的析構(gòu)函數(shù)會被調(diào)用。對于具有基類和派生類層次結(jié)構(gòu)的對象,析構(gòu)順序如下:

  1. 首先調(diào)用派生類的析構(gòu)函數(shù)。
  2. 然后,依次調(diào)用每個基類的析構(gòu)函數(shù)(從最基類到最派生類)。

這種析構(gòu)順序確保了在派生類對象銷毀時,基類部分已經(jīng)被正確地清理。下面是一個簡單的例子:

#include <iostream>

class Base {
public:
    Base() { std::cout << "Base constructor" << std::endl; }
    ~Base() { std::cout << "Base destructor" << std::endl; }
};

class Derived : public Base {
public:
    Derived() { std::cout << "Derived constructor" << std::endl; }
    ~Derived() { std::cout << "Derived destructor" << std::endl; }
};

int main() {
    Derived d; // 構(gòu)造順序:Base -> Derived
    return 0;   // 析構(gòu)順序:Derived -> Base
}

在這個例子中,我們創(chuàng)建了一個派生類Derived的對象,它繼承自基類Base。當(dāng)對象被創(chuàng)建時,首先調(diào)用Base類的構(gòu)造函數(shù),然后調(diào)用Derived類的構(gòu)造函數(shù)。當(dāng)對象被銷毀時,首先調(diào)用Derived類的析構(gòu)函數(shù),然后調(diào)用Base類的析構(gòu)函數(shù)。

0