3

我将基类析构函数定义为“虚拟”。例如:-

class Base
{
public:
    virtual ~Base()
    {
        cout << "Calling ~Base()" << endl;
    }
};

并且也在派生类中例如:例如:-

class Derived: public Base
{
public:
    virtual ~Derived()
    {
        cout << "Calling ~Derived()" << endl;
    }
};

我的问题是在删除指向派生类对象的基类指针时如何调用两个析构函数。??????? 谢谢..,

4

1 回答 1

1

类的实例作为“建筑物”构建在内存中,其中基础是层次结构中的最高类。析构函数的调用顺序与构造函数相反。

意义:

子子类 -> 子类 -> 类

析构函数总是被调用。在破坏对象(子类)的一部分后,它派生的类将被破坏,依此类推。

您不必从子类中调用“超级”析构函数的原因是必须始终调用析构函数。此外,与您可能没有默认构造函数(强制您显式调用超级构造函数)的构造函数相反,析构函数并非如此。你总是有一个没有参数的析构函数,所以编译器总是可以告诉“哪个”析构函数调用(因为没有那么多选项)。

于 2013-07-07T17:28:36.303 回答