C++ 类和实例对象,内存关系

这篇具有很好参考价值的文章主要介绍了C++ 类和实例对象,内存关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 C++ 中,成员变量和成员函数的拷贝数量与它们是静态的还是非静态的有关。与此同时,使用 sizeof 操作符测量类和对象的大小时,也需要考虑这些因素。以下是综合这些方面的总结:

  1. 非静态成员变量:每个对象实例都有一份属于自己的成员变量拷贝。因此,如果创建了 N 个对象实例,内存中将有 N 份非静态成员变量的拷贝。使用 sizeof 测量类或对象的大小时,包括所有非静态成员变量所占用的内存,以及可能的内存对齐填充。
  2. 静态成员变量:在内存中只有一份拷贝,它们被类的所有对象实例共享。静态成员变量不属于任何特定对象实例,而是属于类本身。使用 sizeof 测量类或对象的大小时,静态成员变量不占用类实例的内存。
  3. 非静态成员函数:在内存中只有一份拷贝,与类的对象实例数量无关。这些函数通过一个隐式参数(通常称为 this 指针)访问特定对象实例的成员变量。尽管每个对象实例都有一个与之关联的函数指针,但成员函数的代码在内存中仅存在一份,为所有对象共享。使用 sizeof 测量类或对象的大小时,非静态成员函数不占用类实例的内存。
  4. 静态成员函数:在内存中也只有一份拷贝,与类的对象实例无关。静态成员函数属于类本身,而不属于任何特定对象实例。使用 sizeof 测量类或对象的大小时,静态成员函数不占用类实例的内存。

综上所述,使用 sizeof 测量类和对象的大小时,需要考虑非静态成员变量所占用的内存和可能的内存对齐填充。静态成员变量、非静态成员函数和静态成员函数不占用类实例的内存。在大多数情况下,使用 sizeof 测量类和对象的大小得到的结果是相同的,因为对象的内存分布与其所属类的内存分布相同。文章来源地址https://www.toymoban.com/news/detail-622244.html

到了这里,关于C++ 类和实例对象,内存关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 类和对象及其关系

    类概述: 类特点: 类的定义(成员变量 和 成员方法) 类的使用(创建对象) 概念::对象具有的各种特征 对象的创建 对象的使用 对象内存 栈内存中 使用完,自动消失。堆内存中必须使用垃圾回收器,在空闲时侯回收 类和对象的关系: 类是对象的抽象 , 对象是类的实

    2024年01月24日
    浏览(52)
  • <C++> 类和对象-面向对象

    C语言是 面向过程 的,关注的是过程,分析出求解问题的步骤, 通过函数调用逐步解决问题。 C++是基于 面向对象 的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函

    2024年02月14日
    浏览(46)
  • C++类和动态内存分配

    C++能够在程序运行时决定内存的分配,而不是只在编译阶段,因此,就可以根据程序的需要,而不是根据一系列严格的存储类型规则来使用内存,C++使用new和delete运算符来动态控制内存,但是,在类中使用这些运算符会导致许多新的问题,在这种情况下,析构函数就是必不可

    2024年04月16日
    浏览(43)
  • <C++> 类和对象(上)-面向对象

    C语言是 面向过程 的,关注的是过程,分析出求解问题的步骤, 通过函数调用逐步解决问题。 C++是基于 面向对象 的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函

    2024年02月11日
    浏览(53)
  • 【C++】类和对象(上篇)

    目录 一、类的引入 二、类的定义 三、类的访问限定符及封装   1、访问限定符   2、封装 四、类的作用域 五、类的实例化 六、类对象模型   1、计算类对象的大小   2、类对象的存储方式   3、结构体/类内对齐规则 七、this 指针   1、this 指针的引出   2、this 指针的特性 首

    2024年02月09日
    浏览(73)
  • 【C++】类和对象-封装

    在main函数前重新补上isSame函数 在Cube类里面添加issamebyclass,利用成员函数判断两个立方体是否相等 自己写的代码: B站视频链接: https://www.bilibili.com/video/BV1et411b73Z/?p=105spm_id_from=333.1007.top_right_bar_window_history.content.clickvd_source=fb8dcae0aee3f1aab700c21099045395

    2024年02月15日
    浏览(47)
  • 【C++】类和对象(3)

    首先我们先回顾一下构造函数,对象的初始化由构造函数来完成,我们可以在构造函数的函数体内对对象的成员变量进行赋值,但这就有一个问题,如下: 答案:显然不是,因为变量只能定义一次。 也就是说,构造函数的函数体内部并不是初始化的地方(定义的地方),而

    2024年02月06日
    浏览(33)
  • 【C++】类和对象(上)

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C++之路】 C语言是面向过程的,而C++是面向对象的,那面向过程和面向对象到底是什么呢? 我们拿一个非常典型的 外卖系统 来进行举例: 面向过程: 我们知道外面

    2024年02月02日
    浏览(44)
  • 【C++】类和对象(中篇)

    在往期 类和对象(上篇) 中,我们初步接触了C++中的类和对象,接下来我会和大家分享有关这个知识点更多的内容~ 如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成默认成员函数。 默认成员函数:用户

    2024年02月15日
    浏览(57)
  • 【C++】类和对象(四)

    前言:在类和对象中,我们走过了十分漫长的道路,今天我们将进一步学习类和对象,类和对象这块荆棘地很长,各位一起加油呀。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C++学习 👈 💯代码仓库:卫卫周大胖的学习日记💫 💪关注博主和博主一起学习

    2024年02月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包