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

谢谢
2025-02-27 07:41:51
推荐回答(2个)
回答1:

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

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



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




如有不懂 欢迎追问!

回答2:

这个题考验的是虚函数,虚函数的调用规则就是:new的是谁的对象,就调用谁的方法。
从当前的Code上来看:a *p = new a[3];,显然p new出来的对象是a。
其次,中途对p的指针进行了赋值操作,但是它的虚函数表(vftable)是没有变更的,所以调用的还是a的sound()。
因为a类中的sound()什么都不执行,所以什么都不输出来。
以上,有问题请联络。