在C++中,继承机制的析构顺序与对象的构造顺序相反。当一个类对象被销毁时,它的析构函数会被调用。对于具有基类和派生类层次结构的对象,析构顺序如下:
- 首先调用派生类的析构函数。
- 然后,依次调用每个基类的析构函数(从最基类到最派生类)。
这种析构顺序确保了在派生类对象销毁时,基类部分已经被正确地清理。下面是一个简单的例子:
#includeclass 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
类的析构函数。