Skip to content

2 对象、资源与抽象

这一篇计划讨论函数接口、类与不变量、RAII、所有权、复制与移动,以及运行时多态。重点不是记住类的全部语法,而是学会用类型表达约束、管理资源。

本篇尚在编写中。

  • 2.1 如何设计一个函数接口
    • 按值、const T&T&、指针分别表达什么
    • 返回值优先
    • optional 参数与返回值
    • std::optional
    • C++23 的 std::expected
    • API 如何表达所有权、可空性和错误
  • 2.2 类不是带函数的结构体
    • 封装的真正目的:维护不变量
    • 构造函数与成员初始化
    • public/private
    • const 成员函数
    • 一个类型什么时候值得成为类
    • 普通聚合 struct 什么时候更合适
  • 2.3 资源管理与 RAII
    • 资源不只是内存:文件、锁、socket、数据库连接
    • 构造获取、析构释放
    • 为什么尽量不直接写 new / delete
    • std::unique_ptr
    • std::shared_ptr 为什么不是默认选择
    • 裸指针通常如何表达 “观察但不拥有”
  • 2.4 值语义、复制与移动
    • 对象复制到底意味着什么
    • 析构、复制、移动之间的关系
    • Rule of Zero 应当先讲
    • Rule of Five 作为理解底层机制的内容
    • 移动不是 “更快的复制”
    • moved-from 对象和异常安全
  • 2.5 运行时多态只是一种抽象方式
    • composition over inheritance
    • 接口、抽象基类、虚函数、虚析构
    • 对象切片
    • 何时使用 std::variant
    • 何时使用模板 / concept
    • 何时才真的需要继承树