【发布时间】:2014-11-28 19:30:32
【问题描述】:
我已经有一段时间没有使用派生类和多态性了,我不知道如何访问派生类数据项。
// Quick example
class Base {
string data1; // data1 = "FOO"
};
class ChildA : public Base {
string data2;
};
int main() {
Base **list;
list = new Base*[1];
base[0] = new ChildA(// data2 = "BAR");
std::cout << base[0]->data1; // FOO
std::cout << base[0]->data2; // Error; no member named "data2" in Base
是否可以从基类数组中检索派生数据?
【问题讨论】:
-
了解虚拟成员函数(无论如何,您的示例中没有多态性)
-
类中的访问权限默认为
private。 -
关于多态性的重点是设计你的程序,这样你就不会做你的代码正在做的事情。关键是你不想关心类型的细节尤其是而不是他们的内部数据是什么样的。
标签: c++ arrays class dynamic polymorphism