【C/C++】解析 类成员属性

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


一、空类实例占用空间大小

先创建一个空类:

class CTest
{

};

然后在主函数中使用CTest这个空类创建一个对象

并使用sizeof()函数计算这个空类创建的对象和空类的字节大小


int main()
{

	CTest test1;
	cout << sizeof(test1) << "    " << sizeof(CTest) << endl;

	return 0;
}

在这里插入图片描述

通过运行可以发现:空类对象和空类都占用1个字节的空间大小

这是因为:

C++标准规定,凡是一个独立的(非附属)对象都必须具有非零大小

所以一个空类即使没有任何数据存储其大小不能为0,空类实例占用内存的大小为1,是用来在内存中占位的


二、类成员属性

如果在类中定义一个类成员:

class CTest
{
public:
	int m_a;

};

在这里插入图片描述

再次运行字节数就为类成员int类型的4字节

sizeof(类型)表示,分配当前类型的变量所占用的空间大小
当一个类中存在非静态成员变量的时候,sizeof(类)占位用的一个字节就不会单独存在
因为变量的地址已经起到了占位、标识的作用;


对象地址

在主函数中再定义一个对象test2,输出查看两个对象的地址:

	CTest test1;
	CTest test2;

	cout << "对象test1的地址:" << &test1<< " 对象test2的地址:" << &test2 << endl;

在这里插入图片描述

不同的对象在内存中的地址不同!

二、类成员属性总结

当定义一个类时,其中的成员属性只是类的一分,在没有创建对象之前,这些属性并不存在的内存空间

通过创建对象来实例化类时,每个对象都有自己独立的成员属性。

在为每个对象分配内存空间时,会为对象的成员属性分配相应的内存

class CTest
{
public:
	int m_a;
};
int main()
{
	CTest test1;
	CTest test2;
	cout << "类成员test1的地址:" << &test1.m_a <<endl<< "类成员test2的地址:" << &test2.m_a << endl;
	return 0;
}

在这里插入图片描述

类成员属性:属于对象,当定义对象时,属性才会真正的存在(在内存中分配空间),才开辟对应的空间

多个对象会存在多份的成员属性(表现为在内存中的地址不同),彼此独立,互不扰


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值