父类的引用指向子类的对象, 调用虚函数为什么执行的是父类的

zzjweb 2016-07-28 12:37:07
我有一个A类, B:public A
A有virtual void fun(),
B有virtual void fun(),
用一个vector<A>存放一些A和一些B, 循环遍历调用fun(), 如何才能在当里面某元素是B类的时候执行B类的方法?
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2016-07-28
  • 打赏
  • 举报
回复
你vector中的对象存的也不是引用,而是已经被切片后的对象了,当然不会调用子类虚函数 如果需要使用多态,在vector中应该存指针而不是对象
paschen 2016-07-28
  • 打赏
  • 举报
回复
你vector中的对象存的也不是引用,而是已经被切片后的对象了,当然不会调用子类虚函数 如果需要使用多态,在vector中应该存指针而不是对象
flying_music 2016-07-28
  • 打赏
  • 举报
回复
用指针吧,定义一个vector<A*> vec;然后把A或B对象的指针放进去,再用vec[i]->fun()调用就可以了
slmax1 2016-07-28
  • 打赏
  • 举报
回复
A *a = new B a->fun() 调用B类的方法 B *b = new B b->fun() 同上 这个好像是观察者模式?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧