💻【C++】类的大小
空的类是会占用内存空间的,而且大小是 sizeof == 1,原因是 C++ 要求每个实例在内存中都有独一无二的地址。
(一)类内部的成员变量:
- 普通的变量:是要占用内存的,但是要注意对齐原则(这点和 struct 类型很相似)。
- static 修饰的静态变量:不占用内容,原因是编译器将其放在全局变量区。
(二)类内部的成员函数:
- 普通函数:不占用类对象本身的内存. 因为函数是放在代码区的, 所有类对象共用类的一个函数空间
- 虚函数:有一个指向虚函数的指针,要占用 4 个字节,用来指定虚函数的虚拟函数表的入口地址。所以一个类的虚函数所占用的地址是不变的,和虚函数的个数是没有关系的。
(三)虚继承与继承的区别:
- 多了一个虚基指针。
- 虚基类位于派生类存储空间的最末尾。
- 不会共用虚函数指针。
相关笔记
- 虚函数
- Union与内存对齐