--- title: C++类与对象 tags: - module - cpp - oop - joplin type: module source_type: reconstructed created: 2026-04-22 updated: 2026-04-22 --- # C++类与对象 > [!abstract] > 这一模块是 C++ 面向对象的主干。重点不是只会写 `class`,而是理解对象、封装、继承、多态以及资源管理在类设计中的作用。 ## 模块结论 - [[C++类与对象概念]] 是组织现实对象与程序结构的基础。 - [[C++继承与多态]] 让代码具备复用和运行期分派能力。 - 构造、析构、拷贝和运算符重载共同决定对象语义是否可靠。 ## 一、封装 - 类把属性和行为组织成一个整体。 - `public/protected/private` 控制访问边界。 - 封装既是组织方式,也是约束方式。 ## 二、对象生命周期 - 构造函数负责初始化。 - 析构函数负责清理资源。 - 拷贝构造和赋值运算符决定对象复制语义。 ### 为什么这一点在 C++ 特别重要 - 因为对象可能直接管理堆资源、文件句柄等外部资源。 - 一旦复制语义不清,极易出现重复释放或悬空指针。 ## 三、继承 - 子类复用父类接口和实现。 - 公有继承最能表达“is-a”关系。 - 继承关系还会影响成员访问权限和对象布局。 ## 四、多态 - 依赖虚函数实现运行期分派。 - 指针或引用指向基类对象时,多态才真正发挥作用。 - 多态是综合项目里做抽象设计的关键。 ## 五、其他常见能力 - 友元 - 运算符重载 - 静态成员 - this 指针 - 常函数与常对象 ## 六、易错点 - `struct` 和 `class` 在 C++ 不只是 C 风格残留,它们默认访问权限不同。 - 没有虚析构函数的多态基类容易出问题。 - 运算符重载的目标不是炫技,而是让类型行为更自然。 ## 七、复习提问 - 封装、继承、多态分别在 C++ 中解决什么问题? - 为什么 C++ 类设计必须重视构造、析构和拷贝? - 多态为什么往往要和指针或引用一起使用? ## 来源 - [[raw/Joplin/编程学习项目/C++学习笔记/2. C++核心编程/3. 函数提高.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/2. C++核心编程/4. 类和对象.md]] - [[raw/Joplin/编程学习项目/C++学习笔记/2. C++核心编程/6. 基于多态的职工管理系统.md]] ## 相关页面 - [[C++]] - [[C++类与对象概念]] - [[C++继承与多态]]