【发布时间】:2011-05-06 06:37:32
【问题描述】:
假设我们有一个基类,它有一个虚方法:
class BaseClass
{
virtual void MethodToOverride() const
{
DoSomething();
}
};
还有一个覆盖该方法的派生类(根据情况我们可以将其再次设为虚拟或不虚拟):
class DerivedClass : public BaseClass
{
void MethodToOverride() const
{
DoSomethingElse();
}
}
如果我们犯了错误,例如定义 MethodToOverride 非 const 或使用错误的字符,我们只需定义一个新方法,例如:
void MethodToOverride() {} // I forgot the const
void MthodToOverride() const {} // I made a typo
所以这编译得很好,但在运行时会导致不需要的行为。
有没有办法将函数定义为对现有函数的显式覆盖,所以如果我定义错误,编译器会警告我?类似的东西(我知道它不存在):
void MethodToOverride() const overrides BaseClass::MethodToOverride() const {}
【问题讨论】:
-
"(根据情况我们可以再次将其变为虚拟或不虚拟)" ?无论您是否将其实际标记为虚拟,该方法都将是虚拟的,所以我不太明白您的评论是什么意思。
-
在得到一些非常好的答案后,我很难接受只有一个:我接受了 Alf 的答案,因为这是我正在寻找的技巧,但我也喜欢 Paul 的最佳风格投票和 Vitaut 的未来...谢谢大家
标签: c++ oop overriding virtual