在 C++ 中,成员变量和成员函数的拷贝数量与它们是静态的还是非静态的有关。与此同时,使用 sizeof 操作符测量类和对象的大小时,也需要考虑这些因素。以下是综合这些方面的总结:文章来源:https://www.toymoban.com/news/detail-622244.html
- 非静态成员变量:每个对象实例都有一份属于自己的成员变量拷贝。因此,如果创建了 N 个对象实例,内存中将有 N 份非静态成员变量的拷贝。使用 sizeof 测量类或对象的大小时,包括所有非静态成员变量所占用的内存,以及可能的内存对齐填充。
- 静态成员变量:在内存中只有一份拷贝,它们被类的所有对象实例共享。静态成员变量不属于任何特定对象实例,而是属于类本身。使用 sizeof 测量类或对象的大小时,静态成员变量不占用类实例的内存。
- 非静态成员函数:在内存中只有一份拷贝,与类的对象实例数量无关。这些函数通过一个隐式参数(通常称为 this 指针)访问特定对象实例的成员变量。尽管每个对象实例都有一个与之关联的函数指针,但成员函数的代码在内存中仅存在一份,为所有对象共享。使用 sizeof 测量类或对象的大小时,非静态成员函数不占用类实例的内存。
- 静态成员函数:在内存中也只有一份拷贝,与类的对象实例无关。静态成员函数属于类本身,而不属于任何特定对象实例。使用 sizeof 测量类或对象的大小时,静态成员函数不占用类实例的内存。
综上所述,使用 sizeof 测量类和对象的大小时,需要考虑非静态成员变量所占用的内存和可能的内存对齐填充。静态成员变量、非静态成员函数和静态成员函数不占用类实例的内存。在大多数情况下,使用 sizeof 测量类和对象的大小得到的结果是相同的,因为对象的内存分布与其所属类的内存分布相同。文章来源地址https://www.toymoban.com/news/detail-622244.html
到了这里,关于C++ 类和实例对象,内存关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!