实际对象而不是父类的调用方法

谢里·吉尔迪亚(Shrey Ghildiyal)

我有以下伪代码:

 #include <iostream>
 #include <vector>

 using namespace std;

 class Parent {
 public:
     void printHello() {
         cout << "Hello Parent" << endl;
     }
 };

 class Child : public Parent {
 public:
     void printHello() {
         cout << "Hello Child" << endl;
     }
 };


 int main() {
     vector<Parent*> list;
     Child child;
     list.push_back(&child);

     list[0]->printHello();
  }

  Output: Hello Parent

我正在尝试创建从父类派生的类的对象列表。遍历它们并运行它们都继承并重写的方法。

我以为子类中的方法将覆盖父类中的方法。

我也尝试过使用vector<Parent>代替的方法vector<Parent*>

结果是一样的。如何调用派生类而不是父类的方法?

塞巴斯蒂安·达戈斯蒂诺(Sebastian D'Agostino)

在C ++中,必须在父类方法定义中使用virtual来指定要使用多态方法。C ++中的默认行为不是多态的。

#include <iostream>
#include <vector>

using namespace std;

class Parent {
public:
    virtual void printHello() {
        cout << "Hello Parent" << endl;
    }
};

class Child : public Parent {
public:
    void printHello() {
        cout << "Hello Child" << endl;
    }
};

查阅更多信息:C ++中的多态性

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章