相关疑难解决方法(0)

虚拟析构函数如何在C++中工作

我会输入一个例子:

class A
{
public:
virtual ~A(){}
};

class B: public A
{
public:
~B()
{
}

};



int main(void)
{
A * a =  new B;
delete a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在在上面的例子中,析构函数将以递归方式从下到上调用.我的问题是编译器如何做这个MAGIC.

c++

11
推荐指数
2
解决办法
7886
查看次数

如果类至少包含一个虚函数,是否总是需要将析构函数声明为虚函数?

可能的重复:
何时使用虚拟析构函数?

如果一个类(具有虚函数)及其继承类的所有数据成员都是非指针类型(意味着它不能保存任何动态内存),是否需要将析构函数声明为虚函数?

例子

class base {
    int x;
public:
    virtual void fn(){}

};

class der: public base {
    int y;
public:
    void fn(){}

};
Run Code Online (Sandbox Code Playgroud)

这里我们需要一个虚拟析构函数吗?

c++

4
推荐指数
1
解决办法
5441
查看次数

标签 统计

c++ ×2