在C++中,繼承機制的析構順序與對象的構造順序相反。當一個類對象被銷毀時,它的析構函數會被調用。對于具有基類和派生類層次結構的對象,析構順序如下:
這種析構順序確保了在派生類對象銷毀時,基類部分已經被正確地清理。下面是一個簡單的例子:
#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; // 構造順序:Base -> Derived
return 0; // 析構順序:Derived -> Base
}
在這個例子中,我們創建了一個派生類Derived
的對象,它繼承自基類Base
。當對象被創建時,首先調用Base
類的構造函數,然后調用Derived
類的構造函數。當對象被銷毀時,首先調用Derived
類的析構函數,然后調用Base
類的析構函數。