今天面试C++,问到了类与类占用的空间大小。平常编程的时候没留意这些东西,比较的底层。照样的,在CSDN搜了下,发现一篇总结的挺好的博客:
有几点要注意
- 空的类,一般是不用分配内存的。但是为了表明每一个实例都有独特的内存空间,所以分配1字节。
- 类里面遵循4字节对齐原则(空类除外),也就是说如果我只有1个char类型,那么占4字节,2个char,也是4字节。
- 类的函数不占用内存。类的函数是通过在函数的参数里面加上类的指针来实现的。所以每一个实例都不会保存函数指针。
- 静态的变量不占用类内存,因为静态变量声明在静态区,多个实例共享一个。
- 如果类里面有虚函数,那么就会有一个虚函数表指针,无论多少个虚函数,也公用一个虚函数表指针,父子类也只有一个虚函数表指针。