c++问题,求助求助!必采纳 100

谢谢... 谢谢 展开
 我来答
以林Code
2020-06-28 · 科普各类科学技术,带大家涨知识。
以林Code
采纳数:35 获赞数:40

向TA提问 私信TA
展开全部

题主你好,你的代码写错了,你应该是想实现多态是吧,你的a *p = new a[3]; 此时是生成一个有3个a类也就是父类的对象,而你用p[1] = pig2;    p[2] = pig3; 此时并不是你的指针指向了对象,而是你将 b c 类和 父类有的东西进行了赋值,也就是空,所以你show函数打印的也是a类的函数。

你应该这样修改  main函数应该改为



然后你的show函数参数应改为




如有不懂 欢迎追问!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MarsCode
2024-08-21 广告
C语言在线编译是一种便捷的开发方式,它允许开发者无需在本地安装编译器即可快速编写、编译并运行C语言代码。用户可以通过在线IDE(集成开发环境)平台,直接在网页上编写C代码,并实时查看编译结果和程序输出。这种方式特别适合初学者学习编程或进行小... 点击进入详情页
本回答由MarsCode提供
CraZy_小猪
2020-09-24 · TA获得超过792个赞
知道小有建树答主
回答量:871
采纳率:55%
帮助的人:260万
展开全部
这个题考验的是虚函数,虚函数的调用规则就是:new的是谁的对象,就调用谁的方法。
从当前的Code上来看:a *p = new a[3];,显然p new出来的对象是a。
其次,中途对p的指针进行了赋值操作,但是它的虚函数表(vftable)是没有变更的,所以调用的还是a的sound()。
因为a类中的sound()什么都不执行,所以什么都不输出来。
以上,有问题请联络。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式