基本上,我希望在我的C ++代码中使用override
关键字的C#编译器功能。
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
关键字来捕获我糟糕的实现。是否有任何关键词如“覆盖”被引入C ++,或者我们是否坚持使用#define override virtual
来展示我们的意图? (实际上,我不这样做 - 我讨厌使用预处理器来“扩展”语言)。
答案 0 :(得分:3)
据我所知,目前的标准是不可能的。您可以在即将推出的C ++ 0x中完成。有关详情,请参阅此处:Explicit virtual function overrides
答案 1 :(得分:1)
如果你不能等待C ++ 0x,Visual C ++已经有了这个override关键字。 (自2005年以来我相信)。语法是:
virtual int foo(int) override;
但是,你没有义务输入它。它是一个非标准的微软扩展。