首页 > 代码库 > Empty virtual base class的内存分配
Empty virtual base class的内存分配
class X{};class Y:public virtual X{};class Z:public virtual X{};class A:public Y,public Z{};
使用sizeof在vs210上计算上面类的大小,计算结果如下
可以看到empty virtual base class的大小并不是0,编译器会安插一个char,这样可以让两个object在内存中有独一无二的地址
X a,b;if(&a == &b) cerr<<"Memery address is same!"<<endl;
class Y 和 class Z的大小是4,这是因为这两个函数虚继承了class X,virtual base class 被放在derived class object 开头的部分,又由于内存对其原则,自动补充了3bytes,所以大小是4。
Empty virtual base class 已经成为C++ OO设计的一个特有技术术语,它提供了一个virtual interface,没有定义任何数据。某些新的编译器对此提供了特殊处理,一个empty virtual base class被视为derived class object最开头的一部分。
class X,Y,Z在内存中的布局如下图所示:
Empty virtual base class的内存分配
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。