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函数参数应改为




如有不懂 欢迎追问!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CraZy_小猪
2020-09-24 · TA获得超过792个赞
知道小有建树答主
回答量:871
采纳率:55%
帮助的人:269万
展开全部
这个题考验的是虚函数,虚函数的调用规则就是:new的是谁的对象,就调用谁的方法。
从当前的Code上来看:a *p = new a[3];,显然p new出来的对象是a。
其次,中途对p的指针进行了赋值操作,但是它的虚函数表(vftable)是没有变更的,所以调用的还是a的sound()。
因为a类中的sound()什么都不执行,所以什么都不输出来。
以上,有问题请联络。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式