虚继承的内存布局手札1——基于VS2012
来源:互联网 发布:淘宝运营考试试卷 编辑:程序博客网 时间:2024/06/16 02:48
1、纸上得来总觉浅,低头debug才深刻。
对于《深度探索C++对象模型》这类型的书,得到的知识要去及时巩固才能实现永久记忆。
2、在实现了了虚拟继承归并分支之后的内容布局跟虚表的可复用存在极大关系。
继承的顺序决定了A和B的布局顺序,然后Common则在高地址,即公虚基类的布局放在D的尾部。
情况1:
class A:public virtual Common{...};
class B:public virtual Common{...;virtual void NotInCommon(){}};
class D:public A,public B{...}
内存布局则是:
D{A,B,Common}; A和Common共用一张虚表
情况1:
class A:public virtual Common{...};
class B:public virtual Common{...;virtual void NotInCommon(){}};
class D:public B,public A{...}
内存布局则是:
D{B,A,Common};从低地址忘高地址(对应从上到下的视图)。
继承列表在某种程度上相当于变量声明,声明的是该位置存放的是某个基类。D、A、Common公用一张虚表。优先调整为能满足单继承的状态(待续。),而B则通过偏移。如果在VS中是看不到当前类的虚表指针——这不科学,怎么可能找不到,其实虚表指针就是和最后的一个父类对象使用公用一个虚表指针变量。但是由于视图是基类对象,也就说看不到此派生对象多增加的虚函数。待续。
0 0
- 虚继承的内存布局手札1——基于VS2012
- 虚继承--内存布局
- 虚继承内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局
- 虚继承与虚基类的内存布局
- c++虚继承对象的内存布局
- 虚继承之单继承的内存布局
- 虚继承之单继承的内存布局
- 虚继承之单继承的内存布局
- 多重继承和虚继承的内存布局
- 多重继承和虚继承的内存布局
- 多重继承和虚继承的内存布局
- 填报监听类中获得报表名称
- 解析器文件
- SpringMVC与Struts2的对比
- apache james 搭建邮件服务器
- 添加和移除事件处理兼容各浏览器的封装(带详细注释)
- 虚继承的内存布局手札1——基于VS2012
- String to Integer (atoi)
- WPF Expander-Template(+-)
- C
- 递归算法的时间复杂度终结篇
- hasOwnProperty
- 第15周上机实践项目3——在OJ上玩指针(1)
- Spring 定时任务配置(以普通类的方式,不继承任何类)
- Linux下php安装Redis扩展