首页 > 解决方案 > 覆盖 C++ 未按预期工作

问题描述

我是面向对象编程的新手,所以我对最重要的概念有一个模糊的理解。然而,下面的例子完全让我感到困惑:

class Base {
  public:
    void Hello() {
      cout << "hello world from the BASE class" << endl;
    }

  void printHello() {
    for (int i = 0; i <= 5; i++) {
      Hello();
    }
  }

};

class Derived: public Base {
  public: void Hello() {
    cout << "hello world from the DERIVED class";
  }
};

int main() {
  Derived obj;
  obj.printHello();
  return 0;
}

预期结果:5*“来自 DERIVED 类的 hello world”

结果:5*“来自 BASE 类的你好世界”

BASE 类中的 Hello() 函数不应该被 DERIVED 类中的函数替换吗?如果没有,我怎样才能获得这个?

提前致谢!

标签: c++oopoverriding

解决方案


推荐阅读