纯虚拟析构函数在C

是写错了:

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

一个抽象基类?

至少在MSVC中编译…它会在运行时崩溃吗?

最佳答案
是。你还需要实现析构函数:

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

inline A::~A() { }

应该足够了。

并且由于这得到了一个投票,我应该澄清:如果你从A派生任何东西,然后尝试删除或销毁它,A的析构函数将最终被调用。因为它是纯粹的,没有实现,未定义的行为将随之而来。在一个流行的平台上,这将调用purecall处理程序和崩溃。

编辑:修正声明更加符合,编译http://www.comeaucomputing.com/tryitout/

转载注明原文:纯虚拟析构函数在C - 代码日志