创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥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;
}
类成员属性:属于对象,当定义对象时,属性才会真正的存在(在内存中分配空间),才开辟对应的空间
多个对象会存在多份的成员属性(表现为在内存中的地址不同),彼此独立,互不扰
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |