基本上,我想在我的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覆盖虚拟以显示我们的意图? (实际上,我不这样做 – 我讨厌使用预处理器来“扩展”语言).
解决方法
如果你不能等待C 0x,Visual C已经有了这个override关键字. (自2005年以来我相信).那里的语法是:
virtual int foo(int) override;
但是,你没有义务打字.它是一个非标准的微软扩展.