2条回答 默认 最新
- BugM 2020-03-16 16:20关注
不知道你说的那一行;
分析一下:
首先,对于bclass p1 = obj; 这一行调用了bclass的拷贝构造函数,由于你的代码中没有提供拷贝构造函数,所以执行编译器默认提供的拷贝构造函数,进行非静态成员的简单拷贝,此时obj有了对应的x,y分别为2,4。
然后下一行p1.fun()调用的是bclass的fun(),因此此行输出为2*4 = 8bclass* p3 = &obj; 父类指针指向子类对象,发生了多态,因此p3->fun()调用了子类的fun(),输出结果为 (2 + 4 + 16 ) / 3 = 7
最后一行应该会报错,由于派生类(子类)iclass覆盖重写了基类的fun(), 导致基类的fun的其他重载版本全部失效(隐藏), 因此应该会报错提示不存在参数为int型的fun(int)函数
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
- ¥15 如何在arcgis中导出拓扑关系表
- ¥15 处理数据集文本挖掘代码
- ¥15 matlab2017
- ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
- ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
- ¥20 求:怎么实现qt与pcie通信
- ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
- ¥15 基于蒙特卡罗法的中介效应点估计代码
- ¥15 罗技G293和UE5.3