ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++对象的数据成员存储空间占用计算

2019-05-01 19:53:35  阅读:272  来源: 互联网

标签:成员 int 占用 C++ localhost CBox root charpter02 存储空间


一 空类存储空间的计算

1 代码

#include<iostream>
using namespace std;
class CBox{
};
int main(){
    CBox boxobj;
    cout<<sizeof(boxobj)<<endl;//输出1
    return 0;
}

2 运行

[root@localhost charpter02]# g++ 0214.cpp -o 0214
[root@localhost charpter02]# ./0214
1

3 说明

空类CBox,里面既没有数据成员,也没有成员函数。程序执行结果显示它的大小是1.

空类型对象不包含任何信息,应该大小为0.但是声明该对象的时候,它必须在内存中占有一定的空间,否则无法使用这些对象。至于占用多少内存,由编译器决定。C++中每个空类型的实例占1Byte空间。

二 只有成员变量的类的存储空间的计算

1 代码

#include<iostream>
using namespace std;
class CBox{
    int length,width,height;
};
int main(){
    CBox boxobj;
    cout<<sizeof(boxobj)<<endl;
    return 0;
}

2 运行

[root@localhost charpter02]# g++ 0215.cpp -o 0215
[root@localhost charpter02]# ./0215
12

三 有成员变量和静态成员变量的类的存储空间的计算

1 代码

#include<iostream>
using namespace std;
class CBox{
    int length,width,height;
    static int count;
};
int main(){
    CBox boxobj;
    cout<<sizeof(boxobj)<<endl;
    return 0;
}

2 运行

[root@localhost charpter02]# g++ 0216.cpp -o 0216
[root@localhost charpter02]# ./0216
12

3 说明

该例比上一个例子多了一个静态成员变量,但是程序执行结果还是12,证明了静态数据成员不占对象的内存空间。

 

标签:成员,int,占用,C++,localhost,CBox,root,charpter02,存储空间
来源: https://blog.csdn.net/chengqiuming/article/details/89739791

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有