不知道你说的那一行;
分析一下:
首先,对于bclass p1 = obj; 这一行调用了bclass的拷贝构造函数,由于你的代码中没有提供拷贝构造函数,所以执行编译器默认提供的拷贝构造函数,进行非静态成员的简单拷贝,此时obj有了对应的x,y分别为2,4。
然后下一行p1.fun()调用的是bclass的fun(),因此此行输出为2*4 = 8
bclass* p3 = &obj; 父类指针指向子类对象,发生了多态,因此p3->fun()调用了子类的fun(),输出结果为 (2 + 4 + 16 ) / 3 = 7
最后一行应该会报错,由于派生类(子类)iclass覆盖重写了基类的fun(), 导致基类的fun的其他重载版本全部失效(隐藏), 因此应该会报错提示不存在参数为int型的fun(int)函数
我猜应是你那个virtual只是个接口
我也是顶级小白,尽量解决。
等以后有空,争取明天,手机查看手机有问题,图片看不全。
我会私发你。
以后能用文字不用图片吗?我手机无法展开全部问题,图片我手机只能看第一张,文字可以复制全部。再说打起字来麻烦S了。