你解释错了吧,输出的是
时间: 2024-04-01 21:37:23 浏览: 81
仅用一个100Ω电阻,就能解决电路振荡问题?
非常抱歉,您是对的,我的解释有误。
这段代码中,先定义了基类 Bclass,再定义了派生类 Iclass,Iclass继承了Bclass。Bclass中有两个数据成员x和y,以及一个公有的成员函数fun(),返回值为0。Iclass中新增了一个数据成员z,以及一个公有的成员函数fun(),返回值为(x+y+z)/3。
在主函数中,创建了一个Iclass的对象obj,并将其赋值给了基类对象p1。由于p1是基类类型,因此只能访问基类中的成员函数,而不能访问派生类新增的成员函数,所以输出结果为0。
接着,将Iclass对象obj的地址赋值给了基类对象的引用p2,使用p2调用fun()函数时,访问的是派生类中的覆盖了基类的fun()函数,计算并返回了(x+y+z)/3的值,即(2+4+10)/3=5,所以输出结果为5。
再次使用对象obj调用fun()函数时,同样访问的是派生类中的覆盖了基类的fun()函数,所以输出结果为5。
最后,将对象obj的地址赋值给了指向Iclass类型的指针p3,使用指针p3访问对象的fun()函数时,同样访问的是派生类中的覆盖了基类的fun()函数,所以输出结果为5。
因此,最终的输出结果为:
0
5
5
5
非常抱歉之前的解释给您带来的困惑,谢谢您指出我的错误。
阅读全文