如果我对虚拟事件有以下覆盖:
void derivedClass::method(event)
{
// my stuff
baseClass::method(event); // <--
}
//<--- 行的作用是什么?它叫什么?我认为它不会调用基类的方法,因为它是虚拟的(所以没有主体)
最佳答案
正如您所建议的,它调用基类的方法。它是虚拟的这一事实仅意味着它可以被覆盖并且仍然可以从指向基类的指针/引用访问派生类的方法。
这样做的原因很容易通过一个例子看出:
class Base {
public:
virtual void foo() {
/* do some generic stuff */
}
};
class Derived : public Base {
public:
void foo() {
/* do some specific stuff */
/* if you also want to do the generic stuff,
you can call the same method from the base class. */
Base::foo();
}
}
您可能不想为 Derived
类做通用的事情。然后您只需删除对 Base::foo()
的调用即可。
这里有一个很好的引用 virtual methods .
关于C++ 基类::重写虚函数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549957/