我知道类对象的最终确定顺序如下:
现在我被问到派生类对象的最终化顺序。 我想它完全相同,但是在执行上述步骤后还调用了基类对象的析构函数吗?
我不这么认为,但想确保参加考试。
感谢您的帮助:)
答案 0 :(得分:0)
以相反的构造顺序调用析构函数。这意味着将在派生类的析构函数之后自动调用基类的析构函数。
举个例子:
class Foo
{
protected:
SomeType var;
public:
~Foo() {}
};
class Baz : public Foo
{
public:
~Baz()
{
var.doSomething();
}
};
如果基类Foo的析构函数在类Baz的析构函数之前被调用,那么对象 var 就会被销毁(它的析构函数会被自动调用)在Foo的破坏中,你会进入未定义行为的领域。
这是一个简单直观的解释为什么以这种方式调用析构函数。