首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法标记(在编译时)签名与基本签名不匹配的“被覆盖”的方法?

有没有办法标记(在编译时)签名与基本签名不匹配的“被覆盖”的方法?
EN

Stack Overflow用户
提问于 2010-10-08 12:20:28
回答 2查看 234关注 0票数 7

基本上,我希望在我的C++代码中使用其override关键字的C#编译器功能。

代码语言:javascript
复制
class Base
{
   virtual int foo(int) const;
};

class Derived : public Base
{
   virtual int foo(int); // wanted to override Base, but forgot to declare it const
};

众所周知,上面的代码可以很好地编译,但会产生一些奇怪的运行时行为。我希望我的C++编译器能用C#的override关键字来捕捉我糟糕的实现。有没有像"override“这样的关键字被引入到C++中,或者我们坚持使用#define override virtual来表明我们的意图?(实际上,我不这样做-我讨厌使用预处理器来”扩展“语言)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-08 13:58:14

如果你不能等待C++0x,Visual C++已经有了这个override关键字。(我想是从2005年开始)。这里的语法是:

代码语言:javascript
复制
virtual int foo(int) override;

但是,您不必键入它。这是一个非标准的微软扩展。

票数 1
EN

Stack Overflow用户

发布于 2010-10-08 12:37:19

据我所知,这在目前的标准下是不可能的。您可以在即将发布的C++0x中完成此操作。有关更多详细信息,请查看此处:Explicit virtual function overrides

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

https://stackoverflow.com/questions/3887674

复制
相关文章

相似问题

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