文档目录
总结
第一阶段(CRTP):
编译期多态,消除虚函数调用
不能放同一容器,代码复用性好
第二阶段(Type Erasure):
非侵入式接口,包装器内部虚函数
std::function 本质是 TypeErasure + SBO
第三阶段(创建型模式):
工厂:注册表 + unique_ptr,开闭原则
单例:static local 线程安全(C++11)
Builder:链式调用 + build() 时校验
第四阶段(行为型模式):
Strategy:std::function 替代虚类
Observer:vector<function> + weak_ptr 防悬垂
ScopeGuard:RAII 包裹清理操作
COW:读共享写复制,适合读多写少
第五阶段(惯用法):
PIMPL:隐藏实现、加速编译
NVI:公有非虚 + 私有虚,统一加横切逻辑
Copy-and-Swap:异常安全赋值
noexcept:vector 扩容时优先移动
explicit + [[nodiscard]]:防隐式转换、防忽略返回值