让我们假设我们有有一个虚拟方法的基类:如何确定一个方法覆盖C++中现有的虚拟方法?
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 {}
“(根据情况我们可以再次虚拟或不)”?该方法将是虚拟的,无论你实际上是否将其标记为虚拟,所以我不太明白你的意思。 – 2010-11-07 14:43:39
是的,我意识到这是错误的 – martjno 2010-11-07 15:20:53
得到一些非常好的答案后,我有一些困难,只接受一个:我接受了阿尔弗的一个,因为这是我寻找的伎俩,但我也喜欢保罗的最佳风格和Vitaut投票未来...感谢所有人 – martjno 2010-11-07 15:29:46