首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中的纯虚拟析构函数

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

Stack Overflow用户
提问于 2009-03-10 16:02:25
回答 1查看 82.1K关注 0票数 171

这样写是错误的吗:

代码语言:javascript
复制
class A {
public:
    virtual ~A() = 0;
};

抽象基类?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-10 16:04:00

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

代码语言:javascript
复制
class A {
public:
    virtual ~A() = 0;
};

inline A::~A() { }

应该足够了。

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

编辑:修复声明,使其更加一致,使用http://www.comeaucomputing.com/tryitout/进行编译

票数 227
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/630950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档