OOP知识地图
内容简介
这页是 C++ 面向对象部分的入口。C++ OOP 不只是“类、继承、多态”三件事,更重要的是对象生命周期、构造析构、拷贝控制、资源所有权和运行期多态。
主线关系
class / struct
-> 封装
-> 构造和析构
-> 对象生命周期与拷贝控制
-> 继承
-> 多态
-> RAII / 智能指针 / 现代对象实践1. OOP 基础
- cpp面向对象:类、对象、
class和struct的基础区别。 - cpp封装:访问权限、成员私有化、接口边界。
- cpp构造和析构函数:对象创建和销毁的基本规则。
- cpp友元:封装例外,谨慎使用。
2. 对象特性
- cpp对象特性:旧入口,已拆分为下列主题。
- cpp拷贝构造函数调用时机
- cpp构造函数调用规则
- cpp深拷贝和浅拷贝
- cpp初始化列表
- cpp类对象作为成员
- cpp静态成员
- cpp对象内存模型
- cppconst成员函数和常对象
- cppthis指针
- cpp匿名对象
这部分是 C++ OOP 的核心,因为它直接决定对象如何创建、复制、销毁,以及资源是否安全。
3. 继承与多态
4. 现代 C++ 连接
- RAII:用对象生命周期管理资源。
- 智能指针:用所有权模型替代裸
new/delete。 - 移动语义:转移资源所有权。
- 新对象特性:
= default、= delete、委托构造、移动构造等现代对象规则。
最佳代码实践
- 对象生命周期优先交给 RAII,不要手动到处写
new/delete。 - 有资源所有权的类必须认真处理拷贝、移动和析构。
- 能用组合解决的问题,不要急着使用继承。
- 多态基类如果会通过基类指针删除派生类对象,析构函数必须是虚函数。
- 成员变量优先私有,通过清晰接口暴露行为。
错误用法
- 类里有裸指针资源,却只依赖默认拷贝构造。
- 基类析构函数不是虚函数,却用基类指针删除派生类对象。
- 到处使用友元破坏封装。
- 为了复用几个函数就滥用继承。
- 把
static成员当成全局变量到处改。
注意事项
- C++ OOP 和 Java/Python OOP 不同,C++ 对象有更强的值语义、生命周期和资源管理语义。
- 学 OOP 时要把“语法规则”和“对象在内存/生命周期中的真实行为”放在一起理解。