c++ 虚函数继承后调用问题

kgduwu 2018-01-10 11:00:06
我定义了一个基类,基类中定义了一个虚函数,并实现了该函数。
然后有定义了多个子类继承该基类。
有子类重新定义了该虚函数,有子类没有重新定义该虚函数。
但是我在程序中通过各个子类对象的调用该虚函数时,发现输出的都是基类的该虚函数内容,根本没有调用子类的该虚函数。
怎么回事啊?
...全文
1417 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
talk is cheap show your code
boot_black 2018-01-18
  • 打赏
  • 举报
回复
派生类重新定义基类方法的要求比较严格。 必须<1>函数名相同<2>返回值相同(当然返回各自对象的指针或者引用除外)<3>参数列表相同 只有这样才可以实现多态。
百合杰 2018-01-18
  • 打赏
  • 举报
回复
http://blog.csdn.net/hackbuteer1/article/details/7475622
程序员菜鸟 2018-01-18
  • 打赏
  • 举报
回复
talk is cheap,show your code
heronism 2018-01-18
  • 打赏
  • 举报
回复
贴出代码来看吧
faihung 2018-01-18
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
多态需要用指针去调用,用对象调用不行
说到点子上了
faihung 2018-01-18
  • 打赏
  • 举报
回复
我觉得好像是正常的,触发了多态、基类的虚函数会覆盖其它同名函数的。
liweiiewil 2018-01-15
  • 打赏
  • 举报
回复
如果没有源程序,很难分析出问题出在哪里。最好能贴一下源代码。可能的问题是: 1. 你所定义的虚函数,根本没有用virtual声明,这样使用基类的指针对象调用时,还是会调用基类的函数 2. 以为在子类中重定义了,但实际上重定义的函数名或者参数列表与基类是不一致的,因此实际上没有对基类的定义进行覆盖。 3. 1+2
fly_with_the_winds 2018-01-11
  • 打赏
  • 举报
回复
还是把你的代码贴出来看一下吧
幻夢之葉 2018-01-11
  • 打赏
  • 举报
回复
还有引用也可以触发多态
大风哉 2018-01-11
  • 打赏
  • 举报
回复
查一下多态的内容,看促成多态的几个条件达成了没有:指针、虚函数
AlbertS 2018-01-11
  • 打赏
  • 举报
回复
要想触发多态,需要满足多态的条件,假设分类是A,子类是B,父类和子类都定义了函数foo,并且函数foo在父类中是虚函数,那么要想触发多态可以是:

A* pa = new B;
pa->foo();
这样就会调用B的foo函数,如果是B类的对象也可以调用自己的函数

B b;
b.foo();
这样也可以,不知道你的是什么问题,可以把部分代码贴出来看看
paschen 版主 2018-01-11
  • 打赏
  • 举报
回复
多态需要用指针去调用,用对象调用不行

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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