首页 > 编程语言 > 详细

C++学习之路(十):虚继承引入的执行效率

时间:2018-05-04 12:46:19      阅读:241      评论:0      收藏:0      [点我收藏+]

这篇文章不知道取啥名字了,暂且这样叫,直接看场景就明白了。节选自《深度探索C++对象模型》

Point3d origin, *pt = &origin;

(1)origin.x = 0;

(2)pt->x = 0

上述两种代码执行结果是一样的,但是在执行效率上是否存在差异?

(1)如果Point3d是一个普通结构体,普通类,普通单一继承或多继承,则成员x的执行效率都完全相同,因为x在类中的位置偏移,在编译时期就固定了(没有引入虚函数)。(2)如果Point3d是虚继承自一个基类,则pt不能够在编译时被确定指向哪一种类类型,即不能够在编译时期确定x的偏移位置。所以这个存取操作必须延迟到执行器,由一个额外的间接引导才能解决,执行效率慢于(1)

C++学习之路(十):虚继承引入的执行效率

原文:https://www.cnblogs.com/scu-cjx/p/8990017.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!