c++ - 有没有办法标记(在编译时)签名与基本签名不匹配的 "overridden"方法?

标签 c++ virtual overriding

基本上,我希望在我的 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 关键字之类的东西来捕获我糟糕的实现。是否有像“override”这样的关键字被引入到 C++ 中,或者我们是否坚持使用 #define override virtual 来显示我们的意图? (实际上,我不这样做——我讨厌使用预处理器来“扩展”语言)。

最佳答案

据我所知,这在当前标准下是不可能的。你可以在即将到来的 C++0x 中做到这一点。有关更多详细信息,请参见此处:Explicit virtual function overrides

关于c++ - 有没有办法标记(在编译时)签名与基本签名不匹配的 "overridden"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887674/

相关文章:

java - 为什么 java 不像 C++ 那样记录渐近复杂性?

.net - 虚拟麦克风、网络和 vb.net

C++ Virtual 关键字作为一种避免包含代码单元的方法

C++虚拟方法不起作用

java - 父类(super class)和子类参数

c++ - 在 librdkafka 中,dr_cb 在 produce() 线程或 poll() 线程上执行

c++ - Eclipse CDT 5.x 和 cmake 2.6.x

c++ - 替换大量异常使用的最佳方法?

c++ - 在 C++ 中用私有(private)函数覆盖公共(public)虚函数

java - Liskov 的替换原理与 JAVA 中的覆盖有何关系?完全阻碍和覆盖有什么区别?