首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重写[[noreturn]]虚函数

重写[[noreturn]]虚函数
EN

Stack Overflow用户
提问于 2015-09-18 23:17:01
回答 3查看 1.3K关注 0票数 23

[[noreturn]]属性可以应用于不打算返回的函数。例如:

代码语言:javascript
复制
[[noreturn]] void will_throw() { throw std::runtime_error("bad, bad, bad ...."); }

但我遇到了以下情况(不,这不是我设计的):

代码语言:javascript
复制
class B {
public:
  virtual void f() { throw std::runtime_error(""); }
};

class D : public B {
  void f() override { std::cout << "Hi" << std::endl; }
};

我真的想把属性[[noreturn]]放在B::f()声明上。但我不清楚派生类中的覆盖会发生什么。从[[noreturn]]函数成功返回会导致未定义的行为,如果覆盖也继承了该属性,我当然不希望出现这种情况。

这个问题:通过覆盖[[noreturn] virtual void B::f(),我是否继承了[[noreturn]]属性?

我查看了C++14标准,但在确定属性是否继承时遇到了问题。

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

https://stackoverflow.com/questions/32655526

复制
相关文章

相似问题

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