虚拟析构函数-c++

Virtual Destructor - c++

本文关键字:-c++ 析构函数 虚拟      更新时间:2023-10-16

I将基类析构器定义为"Virtual"。例如:-

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

也在派生类中,例如:例如:-

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

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

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

含义:

子类->子类->类

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

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