C++ 基类::重写虚函数的方法

标签 c++ oop

如果我对虚拟事件有以下覆盖:

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/

相关文章:

c++ - MCS锁实现的问题

c++ - 为什么我的特征模板类查找 operator<< 不能用于 llvm::StringRef?

c++ - IntelliSense:类型为 "const char *const []"的成员不能具有类内初始化程序

C++ 获取毫秒时间

Java 面向对象编程对象范围

javascript - 抛出错误消息无法在 OOP Javascript 三元运算符上编译

oop - 这套 SOLID 原则是否缺少额外的 'D' ?

javascript - 面向对象的 JavaScript : Usage of "this" necessary within methods?

java - 如何以更少的代码重复将关卡添加到我的游戏中?

c++ - 使用可变参数模板进行扩展