代码:
#include <iostream> using namespace std; /* class a{ float k; // 4字节 virtual void foo(){} //有一个4字节的指针指向自己的虚函数表 }; class b : virtual public a{ virtual void f(){} }; 有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节;还要包括类a的字节数,所以类b的字节数就求出来了。 运行结果: 8 16 */ /* class a{ float k; virtual void foo(){} }; class b : public a{ virtual void f(){} }; 运行结果: 8 8 */ /* class a{ virtual void foo(){} }; class b : public a{ virtual void f(){} }; 运行结果: 4 4 */ class a{ virtual void foo(){} }; class b : virtual public a{ virtual void f(){} }; // 运行结果: 4 12 void main(){ cout<<sizeof(a)<<" "<<sizeof(b)<<endl; } //总结: 基类不需要解释 内存对齐 //派生类 如果是virtual 继承 ,有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节, 还要包括类a的字节数, // 如果不是virtual 继承,需要包含基类非函数成员
sizeof 和类继承 虚继承 求类大小,布布扣,bubuko.com
原文:http://blog.csdn.net/buyingfei8888/article/details/38423921