开发者社区> 问答> 正文

Point2d的print方法被调用而不是Point3d的?

我们调用print(point3d);时,Point2d的print方法被调用而不是Point3d的?

展开
收起
花开富贵111 2024-06-19 14:11:26 7 0
1 条回答
写回答
取消 提交回答
  • 在C++中,当基类指针或引用指向派生类对象时,如果基类的成员函数不是虚函数(即没有使用virtual关键字声明),则编译器在编译时就会确定要调用的函数,这就是静态绑定(或早期绑定)。在上述示例中,由于print函数在Point2d类中不是虚函数,所以当通过基类引用point(实际上是Point3d对象)调用print时,编译器会静态地绑定到Point2d类的print函数,因此输出了Point2d(0, 0)而不是Point3d类的信息。

    2024-06-19 15:06:24
    赞同 2 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载