本期来了解一下C++中类的大小相关问题
类的大小是如何计算的呢?我们说的类的大小是指,类的实例化对象的大小,当使用sizeof对类名进行操作时,其返回值是该类数据类型的对象的大小。
计算原则:遵循结构体的对齐原则
与普通成员变量有关,与成员函数和静态成员无关。即普通成员函数,静态成员函数,静态数据成员、静态常量数据成员均对类的大小没有影响,因为静态的数据成员被类的对象所共享,并不属于哪个具体的函数。
虚函数对类的大小有影响,因为虚函数表指针带来的影响。
虚继承对类的大小也有影响,因为虚基表指针带来的影响。
空类的大小是一个特殊情况,空类的大小为1,当用new来创建一个空类的对象时,为了保证不同对象的地址不同,空类也占用存储空间。
#includeusing namespace std; Class Test1{ private: static int str_var;//不影响类的大小 const int ctr_var;//4字节 int var; //8字节 4+4(int)= 8 char var1; //12字节 8+1(char)+3(填充字节)=12 public: A(int temp):ctr_var(temp){} // 不影响类的大小 ~A(){} // 不影响类的大小 }; Class Test2{ }; int main(){ A ex1(4); B ex2; cout< 下面是带有虚函数的情况: #includeusing namespace std; Class Test1{ private: static int str_var;//不影响类的大小 const int ctr_var;//4字节 int var; //8字节 4+4(int)= 8 char var1; //12字节 8+1(char)+3(填充字节)=12 public: A(int temp):ctr_var(temp){} // 不影响类的大小 ~A(){} // 不影响类的大小 virtual void f(){cout<<"A::f"< 特别注意点:虚函数的个数并不影响所占内存的大小,因为类对象的内存中只保存了指向虚函数表的指针。 好啦,以上就是今天所学到的一个重要的C/C++基础知识点,感兴趣的小伙伴欢迎评论区留言、点赞、转发。



