标签:
class X{}; class Y : public virtual X{}; class Z : public virtual X{}; class A : public Y, public Z{};上述X,Y,Z,A中没有任何一个 class 内含明显的数据,只表示了继承关系,所以认为每一个 class 的大小都是0.这样想法是错误的.即使 class X的大小也不为0.
// sizeof(X) = 1 class X{};事实上它并不是空的,它有一个隐式的1 byte,那是编译器插入的一个char,这使得这个 class 的Object可以在内存中分配唯一的地址:
X a, b; if (&a == &b) cerr << "yipes!" << endl;Y和Z的大小都是4(在g++4.8上测试),这个大小和机器有关,也和编译器有关.事实上Y和Z的大小受到三个因素的影响:
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/yiranant/article/details/47208417