前言
https://www.bilibili.com/video/BV1pu411y7n1
https://www.bilibili.com/video/BV1RV4y1x7qH
上面两个链接是 李老师 的直播视屏。
虽然 李老师 在卖课。
但他免费的直播对我 C++ 小白来说,非常有用,让我对 C++ 语言有了一个大局观的认识。
这样才能更好地定位到自己学习的情况。
下面是对他 PPT 内容的一些总结汇总。
C++ 道法器术
- C++ 5个术
- 类型系统
- 编译映射
- 内存管理
- 设计范式
- 习语与规范
- 设计范式
- 面向过程
- 面向对象
- 泛型编程
- 函数式编程
- 模板化编程
- 时空人
- 时间分析 – 发生在什么时候
- 空间分析 – 变量/对象放在哪里
- 人物分析 – 代码哪来的,如何耦合
- 模块一 C++ 类型系统与设施
- 类型基础
- 存储: 堆 栈 全局区
- 值语义与引用语义
- 指针与引用
- 初始化与生命周期
- 其他类型
- 数组序列: vector array 与 C数组
- 字符串处理: string string_view与char*
- 枚举类 联合 位域
- 类
- 数据成员
- 函数成员
- 静态与实例成员
- 操作符重载
- 类型扩展
- auto 与自动类型推断
- const
- volatile
- 结构化绑定
- 编译与构建
- C++ 编译机制
- 模块 (C++ 20)
- GCC/Clang/MSVC
- 类型基础
- 模块二 C++ 面向对象编程
- C++ 对象模型
- 对象内存模型
- 对象成员与指针成员
- 对象布局 对齐 和尺寸
- 三法则与五法则
- 构造函数 / 析构函数
- 拷贝构造函数 / 赋值操作符
- 移动拷贝构造函数 / 移动赋值函数
- 默认定义与删除规则
- 继承: 类型抽象
- 基类与子类
- 成员的继承
- 抽象类
- 共有 私有 受保护继承
- 多继承与虚继承
- 多态: 运行时绑定
- 虚函数
- 虚函数表
- 虚析构函数
- 运行时绑定
- dynamic_cast
- 面向对象设计
- 实现继承与接口继承
- 组合与继承
- 编译时 VS 运行时绑定
- 设计模式: Template Strategy Observer
- C++ 对象模型
- 模块三 内存管理: 原理 优化技巧与避免踩坑
- RAII: 内存与资源管理
- 内存与资源
- 资源获取即初始化 (RAII)
- C++ Java Go Rust 内存管理对比
- 智能指针
- unique_ptr
- shared_ptr
- weak_ptr
- 移动语义
- 右值与左值
- 移动构造与移动赋值
- 移动与拷贝
- 临时对象与返回值优化(RVO)
- std::move 操作
- std::forward 操作
- new 与 delete 扩展
- 全局 new 与 delete
- new 与 delete 操作符
- placement new
- nothrow new
- RAII: 内存与资源管理
- 模板机制
- 参数化类型
- 类模板
- 类型参数与值参数
- 模板参数推到
- 参数的隐式绑定
- 参数化操作
- 函数模板
- 函数对象
- lambda 表达式
- 函数式编程
- 实用类型
- pair 与 tuple
- variant optional any
- bitset
- 模板扩展
- 模板编译模型
- 类型别名
- 模板特化
- 可变参数模板
- constexpr 编译时计算
- SFINAE \ enable_if \ Tag Dispatching \ if constexpr
- 模板元编程
- 参数化类型
- 模块五 泛型编程与 STL
- 容器
- 容器概述
- STL 中的常用容器
- 容器及操作性能考虑
- 容器最佳实践
- 算法
- STL 算法概览
- 不同算法的性能考虑
- 编写泛型算法
- 适配器
- 迭代器
- 迭代器概念
- STL 中的迭代器
- Ranges 与 for
- 概念 (Concept)
- 类型约束与接口规约
- 概念定义
- STL 常用概念
- 容器
- 设计原则 Design Principle
- 正交设计四原则
- 消除重复性
- 分离关注点
- 减少不必要地依赖
- 向稳定的方向依赖
- 整洁代码三原则
- KISS 原则 (简单以理解)
- DRY 原则 (不要重复自己)
- 迪米特原则 (最小依赖)
- SOLID 五大设计原则
- 单一职责原则 (SRP)
- 开闭原则 (OCP)
- 里氏替换原则(LSP)
- 接口隔离原则(ISP)
- 依赖倒置原则(DIP)
- 面向对象三原则
- 封装责任 隔离变化
- 优化使用对象组合 而不是类继承
- 针对接口编程 而不是针对实现编程
- 正交设计四原则
- 设计习语 Design Idiom
- RAII 资源获取即初始化
- Scope Guard 范围守卫
- Copy & Swap 拷贝后转换
- SOO 小对象优化
- Local Buffer 本地缓存
- Copy-On-Write (COW) 变更时拷贝
- EBCO 空基类优化
- Virtual Constructor 虚构造器
- Pimpl 指向实现的指针
- NVI (Non-Virtual Interface) 非虚接口
- CRTP 奇异递归模板模式
- Mixin 混入类
- Policy Design 策略设计
- Type Traits 类型萃取
- Lambda 重载
- Tag Dispatcher 标签分发
- Type Erasure 类型擦除
- SFINAE 替换失败不是错误
- Named Template Arguments / Method Chain 命名模板参数 / 方法链
- 从管理变化的角度理解设计模式
- 晚期扩展
- Template Method
- Builder
- 策略对象
- Strategy
- Observer / Event
- 对象创建
- Factory Method
- Abstract Factory
- Prototype
- 单一职责
- Decorator
- Bridge
- 行为变化
- Command
- Visitor
- 接口隔离
- Adapter
- Proxy
- Facade
- Mediator
- 对象性能
- Singleton
- Flyweight
- 数据结构
- Composite
- Iterator
- Chain of Responsible
- 状态变化
- State
- Memento
- 领域规则
- Interpreter
- 晚期扩展
接口设计
语言构造 | 习语与模式 |
---|---|
封装 - 接口隔离 | Pimpl |
多态基类 - 接口合约 | NVI |
泛型隐式接口 | Template Method |
Type Traits | Factory |
Tag Dispatching | Adapter |
SFINAE | Proxy |
概念 – 泛型显示接口 | Facade |
Composite | |
Iterator |
继承设计
语言构造 | 习语与模式 |
---|---|
继承 | EBCO |
多继承 | CRTP |
虚继承 | Bridge |
实现继承 | Mixin |
接口继承 | Decorator |
变参继承 |
内存设计
语言构造 | 习语与模式 |
---|---|
对象生命周期 | RAII |
值语义/引用语义 | Scope Guard |
对象内存布局 | SOO |
智能指针 {unique_ptr shared_ptr weak_ptr} | Local Buffer |
移动语义 | Copy-On-Write |
Singleton | |
Flyweight |
回调设计
语言构造 | 习语与模式 |
---|---|
函数指针 | Policy Design |
多态对象 (策略 命令) | Strategy |
函数对象 (仿函数) | Observer |
函数适配器 (bine mem_fn) | Command |
Lambda 表达式 | Lambda Overload |
std::function (多态回调对象) | Visitor |
std::invoke (多态调用) | |
std::invocable (回调概念) |