这样写是错误的吗:
class A {
public:
virtual ~A() = 0;
};
抽象基类?
至少这可以在MSVC中编译...它会在运行时崩溃吗?
发布于 2009-03-10 16:04:00
是。您还需要实现析构函数:
class A {
public:
virtual ~A() = 0;
};
inline A::~A() { }
应该足够了。
既然这是一个反对票,我应该澄清一下:如果你从A派生出任何东西,然后试图删除或销毁它,A
的析构函数最终将被调用。由于它是纯的,并且没有实现,因此将随后出现未定义的行为。在一个流行的平台上,这将调用purecall处理程序并崩溃。
编辑:修复声明,使其更加一致,使用http://www.comeaucomputing.com/tryitout/进行编译
https://stackoverflow.com/questions/630950
复制相似问题