惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

智伤帝的个人博客

Maya 拍屏方案汇总 C++ 基础入门 FBX 二进制数据解析 Maya RBF 算法应用 Maya 顶点色单通道笔刷 Maya CurveBrush 笔刷开发 Unreal C++ 工具开发最小实践 Maya C++ pyd 模块开发 Unreal C++ VScode 配置 Maya C++ mll hot reload 研究 Maya CMake 构建 C++ 插件编译环境 Unreal Python 导出 MetaHuman 控制器关键帧 TA 工具人知乎分享 Python 代码规范 Python - Import 机制 Python doit 库 Python dependencies 库 Python blinker 库 Python marshmallow 库
C++ 道法器术
智伤帝 · 2022-11-26 · via 智伤帝的个人博客

前言

https://www.bilibili.com/video/BV1pu411y7n1
https://www.bilibili.com/video/BV1RV4y1x7qH

  上面两个链接是 李老师 的直播视屏。
  虽然 李老师 在卖课。
  但他免费的直播对我 C++ 小白来说,非常有用,让我对 C++ 语言有了一个大局观的认识。
  这样才能更好地定位到自己学习的情况。
  下面是对他 PPT 内容的一些总结汇总。

  • C++ 5个术
      1. 类型系统
      1. 编译映射
      1. 内存管理
      1. 设计范式
      1. 习语与规范
  • 设计范式
      1. 面向过程
      1. 面向对象
      1. 泛型编程
      1. 函数式编程
      1. 模板化编程
  • 时空人
    • 时间分析 – 发生在什么时候
    • 空间分析 – 变量/对象放在哪里
    • 人物分析 – 代码哪来的,如何耦合
  • 模块一 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
  • 模块三 内存管理: 原理 优化技巧与避免踩坑
    • 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
  • 模板机制
    • 参数化类型
      • 类模板
      • 类型参数与值参数
      • 模板参数推到
      • 参数的隐式绑定
    • 参数化操作
      • 函数模板
      • 函数对象
      • 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 (回调概念)

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 智伤帝的个人博客

打赏

  • 微信

    微信

  • 支付宝

    支付宝