C ++中的纯虚拟析构函数

伊万·克雷切托夫(Ivan Krechetov)

写错了吗?

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

一个抽象的基类?

至少可以在MSVC中编译...在运行时会崩溃吗?

MSN

是。您还需要实现析构函数:

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

inline A::~A() { }

应该足够了。

既然这获得了否决,我应该澄清一下:如果您从A派生出任何东西,然后尝试删除或销毁它,A则最终会调用的析构函数。由于它是纯净的并且没有实现,因此将发生未定义的行为。在一个流行的平台上,它将调用purecall处理程序并崩溃。

编辑:修正声明以使其更符合要求,并使用http://www.comeaucomputing.com/tryitout/进行编译

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章