我有以下伪代码:
#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*>
。
结果是一样的。如何调用派生类而不是父类的方法?
在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] 删除。
我来说两句