在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
类的析构函数。