栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

从零开始学C++11新标准知识(内含大厂面试题100道)第五期

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从零开始学C++11新标准知识(内含大厂面试题100道)第五期

本期来了解一下C++中类的大小相关问题

类的大小是如何计算的呢?

我们说的类的大小是指,类的实例化对象的大小,当使用sizeof对类名进行操作时,其返回值是该类数据类型的对象的大小。

计算原则:遵循结构体的对齐原则

与普通成员变量有关,与成员函数和静态成员无关。即普通成员函数,静态成员函数,静态数据成员、静态常量数据成员均对类的大小没有影响,因为静态的数据成员被类的对象所共享,并不属于哪个具体的函数。

虚函数对类的大小有影响,因为虚函数表指针带来的影响。

虚继承对类的大小也有影响,因为虚基表指针带来的影响。

空类的大小是一个特殊情况,空类的大小为1,当用new来创建一个空类的对象时,为了保证不同对象的地址不同,空类也占用存储空间。

#include 

using 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< 
下面是带有虚函数的情况: 
#include 

using 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++基础知识点,感兴趣的小伙伴欢迎评论区留言、点赞、转发。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号