C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针,它是实现面向对象中多态的关键。而虚函数本身和其他成员函数一样,是不占用对象的空间的。

 

为什么空类大小不是0?

 

因为,如果是0的话,可能出现两个变量的地址相同!

 

从以上的几个例子不难发现类的大小:

1.为类的非静态成员数据的类型大小之和.

2.由编译器额外加入的成员变量的大小,用来支持语言的某些特性(如:指向虚函数的指针).

3.为了优化存取效率,进行的边缘调整(对齐).

4 与类中的构造函数,析构函数以及其他的成员函数无关.

https://blog.csdn.net/liu_qiqi/article/details/9344627

posted on 2018-08-22 17:56  newbird2017  阅读(294)  评论(0编辑  收藏  举报