当前位置: 首页 > news >正文

C++【成员变量、成员函数、this指针】

C++ 成员变量与成员函数归属知识卡片


1. 成员变量归属

类型归属存储位置访问方式生命周期是否影响 sizeof(obj)
非静态成员变量对象(实例)对象内存obj.member随对象创建/销毁
静态成员变量全局数据区ClassName::member程序启动/结束时

关键点

  • 非静态成员变量每个对象独立一份,静态成员变量全局共享一份。

  • 静态成员变量需在类外单独定义(如 int ClassName::member = 0;)。


2. 成员函数归属

类型归属this 指针访问权限调用方式
非静态成员函数逻辑属于类,调用依赖对象有(指向当前对象)可访问所有成员(静态+非静态)obj.func()
静态成员函数完全属于类仅能访问静态成员ClassName::func()

关键点

  • 非静态成员函数通过隐式 this 指针区分不同对象,代码在内存中仅存一份。

  • 静态成员函数无 this,不能访问非静态成员。


3. this 指针详解

  • 作用:隐式指向当前调用对象的地址,实现成员函数操作不同对象的数据。

  • 底层转换

    // 源码
    obj.func(); → 编译器转换为 func(&obj); 
  • 特性

    • 在 const 成员函数中为 const ClassName* const 类型。

    • 可为 nullptr(但解引用会导致未定义行为)。

  • 与对象关系:每个对象调用非静态成员函数时自动绑定自己的 this


4. 综合对比

特性非静态成员变量静态成员变量非静态成员函数静态成员函数
归属层级对象类(但依赖对象调用)
内存分配每对象一份全局唯一代码共享,this 绑定对象代码共享
访问依赖实例?
典型用途对象独有状态(如年龄)类共享数据(如计数器)操作对象数据(如 get/set工具函数(如 Math::sqrt()

5. 核心总结

  1. 成员变量

    • 非静态 → 对象级别,独立存储。

    • 静态 → 类级别,全局共享。

  2. 成员函数

    • 非静态 → 需对象调用,隐含 this

    • 静态 → 类直接调用,无 this

  3. this 指针

    • 是非静态成员函数区分不同对象的核心机制。

    • 静态函数、友元函数均无 this

设计哲学:通过 this 和 static 关键字,C++ 高效实现了对象独立性与代码复用的平衡。

http://www.dtcms.com/a/265478.html

相关文章:

  • OSPF高级特性之FRR
  • Vue 项目在哪里加载「字典数据」最好
  • 基于 alpine 构建 .net 的基础镜像
  • 开源模型应用落地-让AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j与Streamlit的创新实践(四)
  • Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
  • 开源 C# .net mvc 开发(六)特殊控制控制台、周期、邮件编程
  • 深度实战:Ubuntu服务器宕机排查全记录
  • 月付物理服务器租用平台-青蛙云
  • 基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
  • npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
  • Python Set() 完全指南:从入门到精通
  • R语言开发记录,一
  • 前端-HTML-day1
  • Rust Web 全栈开发(二):构建 HTTP Server
  • 主流分布式中间件及其选型
  • locate命令的原理是啥
  • OpenCV CUDA模块设备层-----在GPU 上高效地执行两个 uint 类型值的最大值比较函数vmax2()
  • Frida:配置自动补全 in VSCode
  • 搭建VirtualBox-6+vagrant_2+docker+mysql5.7的步骤
  • 客户案例 | 某新能源车企依托Atlassian工具链+龙智定制开发服务,打造符合ASPICE标准的研发管理体系
  • 云原生系统DOCKER中容器系统搭建
  • Python字符与ASCII转换方法
  • Ubuntu Gnome 安装和卸载 WhiteSur-gtk-theme 类 Mac 主题的正确方法
  • vue2+elementui使用compressorjs压缩上传的图片
  • Euler2203安装.NetCore6.0环境操作步骤
  • python安装虚拟环境
  • Python 物联网(IoT)与边缘计算开发实战(1)
  • 优雅草蜻蜓R实时音视频会议系统云原生私有化部署方案深度解析-优雅草卓伊凡|贝贝|clam|麻子|夜辰
  • Docker 容器资源限制
  • 9.Docker的容器数据卷使用(挂载)