网易云课堂(Boolan)C++ 第四周笔记

关于C++类的大小(size)

1. 空类

class AA{

}; 

#include<iostream>

int main()

{

AA A;

std::cout<<sizeof(A);

}

得到结果为:1  。 空类实际内存为0.但是在实际创建的时候会给一个地址,所以size为1.

2.普通成员函数与静态数据成员


在类AA与DD中,显然空函数与空类类似会给它分配一个内存地址,函数的大小取决于函数里的内容。而BB中int为4,静态数据成员没有被计入内存大小,它被放入global data members中,是一种特殊的全局变量。

3.虚函数与继承


32位操作系统下

其中Fruit:

           int         4

           double  8

           char      1

           print 内部实际大小有关 0

           process 4

合计                 17

但是      内存会补齐为24

Apple:

其中继承了Fruit:

                 int         4

                 double  8

                 char      1

                 print 内部实际大小有关 0

                 process 4

自己的:         

                 int       4

                 char    1

                 save    0                

合计             22

但是      内存会补齐为32

虚函数size的为虚指针大小为4字节,虚指针指向虚表,当类内有多个虚函数时,内存上大小只有一个虚指针,多个虚函数被记录在虚表内。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容