C++中类的大小实例分析
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇"C++中类的大小实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++中
千家信息网最后更新 2025年02月23日C++中类的大小实例分析
这篇"C++中类的大小实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++中类的大小实例分析"文章吧。
一、普通类的大小
#includeusing namespace std;class MyClass{public: MyClass(){ int i = 0; float f = 0.01f; }; int getI(){ return i; } int getF(){ return f; }private: int i; float f; //静态变量实际上是其全局变量,它存储在全局/静态存储区,不占对象空间 static int staNum;};int MyClass::staNum = 2;int main(){ MyClass myclass; cout << "myclass的大小" << sizeof(myclass) << endl; return 0;}
我们可以看到,在创建类的对象中,真正占据栈空间的只有两个成员变量,分别为4个字节。静态成员变量实际上与全局变量一起存储在全局存储区,而成员函数则与其他函数一样存在于代码区。
二、空类的大小
#includeusing namespace std;class MyClass{public: MyClass(){};private:};int main(){ MyClass myclass; cout << "myclass的大小" << sizeof(myclass) << endl; return 0;}
在使用类的指针的时候,如果类的的大小为0,那么排在一起的几个空类地址都是一样的话,我们又怎么知道是哪个呢?
三、自动填充类或者结构体的大小
#includeusing namespace std;struct MyStruct1{ bool b1; bool b2; int i1;};struct MyStruct2{ bool b1; int i1; bool b2;};struct MyStruct3{ bool b1; short s1;};int main(){ MyStruct1 s1; MyStruct2 s2; MyStruct3 s3; cout << "MyStruct1的大小" << sizeof(s1) << endl; cout << "MyStruct2的大小" << sizeof(s2) << endl; cout << "MyStruct3的大小" << sizeof(s3) << endl; return 0;}
当我们按照不同的的顺序排列变量的时候会发现,类的大小是不尽相同的。第一种情况,MyStruct中的两个布尔连在一起,如果后面没有变量,编译器会自动填充2个字节;而现在后面还有一个整形i,整形跨越了两个4字节,在读取整形的时候需要两个4字节,因此编译器会在这种情况下也会在i1填充2个字节,从而是i1在下一个字节开始。对于第二种情况,MyStruct2中由于两个布尔类型被整形隔开,我们需要两次填充。第三种情况,MyStruct3中由于short只有两个字节,因此只需要填充一个字节。
以上就是关于"C++中类的大小实例分析"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
大小
字节
变量
两个
内容
全局
情况
存储
实例
实例分析
C++
分析
成员
时候
静态
函数
只有
实际
实际上
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
裕兴软件开发
内蒙古iptv服务器供应
女软件开发转行
数据库查询导出
每个学校图书馆买的数据库
spark 支持的数据库
威海家和网络技术股份
维珍优创服务器连接超时
我的世界关闭服务器
西安市华山论剑网络安全大会
小康数据库辽宁
数据库安全加密和备份
数据库设计必须经过哪四个过程
2021年度网络安全工作责任制情况报告
冬奥保障网络安全检查新闻稿
hikserver服务器品牌
linux服务器管理与应用
软件开发费是否属于研发费
深圳服务软件开发报价
数据库建设红头文件
网络安全用户认证系统
cgp服务器
网络安全工作创新点
晶添软件开发公司
吃鸡一直显示服务器信号
病理传输软件开发文档范例
宜搭数据库怎么导出去
如何用手机登陆ftp服务器
三级网络技术考纲有变化吗
mysql 添加到服务器