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

C++ 类和对象(下)核心总结

C++ 类和对象(下)核心总结

这一篇是类和对象收尾篇,全是面试高频、工程实用点,我给你整理成最精简、最好记的版本,直接背会就能通关。


文章目录

  • C++ 类和对象(下)核心总结
    • 一、初始化列表(构造函数进阶)
    • 二、隐式类型转换 & explicit
    • 三、static 静态成员(超级高频)
      • 静态成员变量
      • 静态成员函数
      • 经典用法
    • 四、友元(friend)
    • 五、内部类
    • 六、匿名对象
    • 七、编译器拷贝优化(重点)
  • 全篇最核心 7 句话

一、初始化列表(构造函数进阶)

  1. 本质:成员变量真正定义并初始化的地方,比函数体内赋值更早。
  2. 写法:构造函数后加:,逗号分隔成员(值)
  3. 必须用初始化列表的3种成员
    • 引用成员int& _ref
    • const成员const int _n
    • 无默认构造的自定义类型
  4. 初始化顺序
    类中声明顺序初始化,和列表写的顺序无关。
  5. C++11 缺省值
    声明时直接赋值,是给初始化列表用的,不是初始化。

二、隐式类型转换 & explicit

  1. 单参数构造函数支持:内置类型 → 隐式转成类对象
    A aa=1;// 隐式转换:构造临时对象 + 拷贝构造 → 优化为直接构造
  2. C++11 多参数也支持
    A aa={1,2};
  3. explicit:禁止隐式类型转换,加在构造前即可。

三、static 静态成员(超级高频)

静态成员变量

  • 所有对象共享,存静态区,不占对象空间
  • 类内声明,类外初始化(不带static)
  • 不能用构造初始化列表

静态成员函数

  • 没有this 指针
  • 只能访问静态成员,不能访问非静态
  • 访问方式:类名::对象.

经典用法

  • 统计对象创建个数
  • 全局唯一配置/计数

四、友元(friend)

  1. 作用:突破访问限定,访问私有成员
  2. 友元函数:不是类成员,可访问私有
  3. 友元类
    • 单向、不传递、不交换
    • A是B友元 ≠ B是A友元
    • A友元B、B友元C ≠ A友元C
  4. 缺点:破坏封装,增加耦合,少用

五、内部类

  1. 定义在类内部的类,是独立类,不占外部对象空间
  2. 受外部类类域 + 访问限定符限制
  3. 内部类默认是外部类的友元
  4. 适合:紧密关联、专属使用的小类

六、匿名对象

  1. 写法:类型(参数),没有名字
  2. 生命周期:只在当前一行
  3. 用法:临时用一次、链式调用
    Solution().Sum_Solution(10);

七、编译器拷贝优化(重点)

  1. 同一表达式内连续拷贝,编译器会合并优化,减少拷贝
  2. 常见优化:
    • 构造 + 拷贝构造 → 直接构造
    • 传值返回 + 接收 → 直接构造到目标对象
  3. Linux 关闭优化:g++ -fno-elide-constructors

全篇最核心 7 句话

  1. 初始化列表是成员真正初始化的地方,引用/const/无默认构造必须用。
  2. 初始化顺序按声明顺序,不是列表顺序。
  3. explicit禁止隐式类型转换。
  4. static成员共享、类外初始化、静态函数无this。
  5. 友元破封装、单向不传递,少用。
  6. 内部类独立、不占空间、默认是外部类友元。
  7. 匿名对象只活一行,编译器会疯狂优化拷贝。
http://www.jsqmd.com/news/584470/

相关文章:

  • 如何用共享线程处理跨页面的数据同步冲突与锁定机制
  • OpenClaw备份与恢复:千问3.5-9B配置迁移完整流程
  • 月之暗面 Kimi 进阶:从长文本到 AI 搜索——最懂中国用户的AI助手
  • PregelProtocol——定义了“LangChain执行体“最小功能集
  • 【Web3】智能合约质量保障工程:从单元测试到 Gas 效能优化
  • Manus:中国AI Agent的破圈之作
  • LN2266 超小型 低电压启动 PWM 控制 升压 DC/DC 电压调整器
  • 【Java Stream 流:高效、优雅的集合操作 ✨】
  • 内网渗透零基础入门教程!小白也能轻松搞懂内网渗透基础知识点
  • MongoDB GridFS的fs.files集合越来越大怎么优化
  • Product Hunt 每日热榜 | 2026-04-03
  • 2026年比较好的砂浆生产线稳定供货厂家推荐 - 品牌宣传支持者
  • ESP32-S3驱动JW01二氧化碳传感器,供电踩坑实录(附完整Arduino代码)
  • OpenClaw资源监控方案:百川2-13B-4bits模型运行时的性能优化
  • 从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合
  • 分钱的艺术:为什么钱分下去了,团队反而有了怨气?
  • 【分布式技术】RustFS 非 Docker 部署完整指南:从单机到生产集群
  • 智力能效:Token之上的竞争
  • C# Avalonia 20 - WindowsMenu- 魔改Hyperlink - 使用例子
  • LLM 是怎么学习的?训练过程大揭秘
  • 避坑指南:清华镜像源安装GitLab时你可能遇到的5个EL版本问题
  • XSS漏洞解析
  • 第6章 数据类型转换-6.3 转换为布尔值
  • 【网络安全干货】黑客内网渗透零基础入门,超详细基础知识手把手教学
  • 【MATLAB源码-第407期】基于OFDM的低轨卫星通信系统中同步技术与链路鲁棒性增强研究,包含:定时同步、频偏估计、载波恢复等。
  • Iterator 与 fail-fast 机制:你不知道的细节
  • Linux生产环境性能优化:内存优先策略,彻底规避Swap性能损耗
  • Maven 4要来了:15年后,Java构建工具迎来“彻底重构”
  • OpenClaw邮件处理助手:Qwen3-14b_int4_awq分类与自动回复
  • 学习日记DAY19