求助,C++问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:02:13
A是一个基类,B是A的公有派生类,一个函数f,形参类型是A,请问可以把B的对象作为实参吗?为什么?A中还有虚函数,f函数调用A的虚函数,各位大侠给详细讲讲这部分知识…小弟谢谢你们啦,一定要详细…

哥来讲讲:
第1点:什么是多态,这你肯定懂的吧,就是一个操作随着你 给的参数不同作出不同的反应。
第2点:多态用在有父子孙类的情况下,就是说f函数的参数可以是不同类,但这些类有继承关系,有相似操作。一个简单例子:给发动机加油的操作,可能是柴油机,可能是汽油机。
第3点:多态的功能实现是由虚函数支持实现的。
//---------下面回答你的问题-------
1。B的对象肯定也可以作为实参。无论你f里的操作函数是否是虚函数,只是不是虚函数的话,无法实现多态。至于要回答为什么的话,理由是调用的参数都是指针,表示对象地址,a,b是一致的
2.还有不清楚的,把它说出来,具体一点,我帮你解释,实现不行 我去翻书- -

参数类型是A的话,把B传入是会报错的..因为隐形类型转换会失败
如果要传B进入f的话,参数类型要改成A*或者A&,这样才能有多态效果哦~

你给个例子我给你分析

貌似不可以。
形参和实参的类型必须一致。虽然B是A的派生类,但仍然是两个不同的类型。