码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-04 13:55:21      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:直接   效率   基类   额外   位置   origin   场景   学习   相同   

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

Point3d origin, *pt = &origin;

(1)origin.x = 0;

(2)pt->x = 0

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

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

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

标签:直接   效率   基类   额外   位置   origin   场景   学习   相同   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!