When I make a vector of a parent class, if I put a child there, child's members will be lost?
本问题已经有最佳答案,请猛点这里访问。
(如果以前在这里问过这个问题,我很抱歉,但现在我搜索了几个小时,找不到任何问题。有人说我想要的是可能的,他告诉我,我是怎么做到的,正如他所说的,但这完全是失败的。)
首先,这里是一个类关系图,用于更轻松地表示问题。
那么不做我想做的事情的代码:
1 2 3 4 5 6 | int main() { Employee jack("Jack", 100); People guys(jack); // using push_back ... } |
因此,当发生这种情况时,正如调试模式所示,伙计们[0]将只有一个
编辑:顺便说一下,
矢量的类型必须是
莫斯科答案中的弗拉德解释了为什么会这样。
多态性与指向基类的指针和引用一起工作。不能定义引用的向量,但可以定义指向基类的指针的向量。
相对于你的例子,矢量人应该被定义为
1 | std::vector<Person *> people; |