
多态
std::vector+std::optional不适合高频对象池,因其每次emplace/reset都触发构造/析构,违背绕过生命周期开销的核心目标;高性能池须用std::aligned_stora...
std::optional适用于单个值可能缺失的场景,如查找或解析;std::variant适用于返回类型明确但互斥的多态场景,如JSON解析。二者解决不同抽象问题,不应随意嵌套或混用。
重载operator+必须返回值类型MyClass而非引用,避免返回局部对象引用;二元运算符建议用非成员友元函数;operator[]需提供const与非const两版本;operator==参数必须...
栈回退是throw触发后按构造逆序调用已构造局部对象析构函数的过程,需依赖编译器生成的unwind表查找析构信息,开销与栈深度和对象数量正相关。
Valgrind是Linux下检测C/C++内存问题的核心工具,需-g-O0编译,用--leak-check=full--show-leak-kinds=all检测泄漏,重点关注definitelyl...
静态多态在编译期绑定,无运行时开销,靠重载、模板和CRTP实现;动态多态在运行期绑定,依赖虚函数和vtable,有间接跳转开销。CRTP通过派生类作模板参数使基类编译期获知具体类型,支持零成本静态分发...
C++模板的核心作用是在编译期生成类型专属的代码副本,从而兼顾类型安全与零运行时开销;它通过实例化机制避免void*和宏的缺陷,支持SFINAE、concepts等约束,并依参数类型生成不同实现。
行为树在游戏AI中应以std::function+继承+显式组合快速构建贴合需求的逻辑,避免通用框架导致的复杂性;节点设计需规避虚函数与内存陷阱,黑板用强类型结构体,重视Running状态的连续性与重...
用纯虚函数定义Observer接口最清晰,即声明virtualvoidupdate(conststd::string&event)=0,强制子类实现,避免对象切片和运行时类型擦除,Subjec...
静态多态本质是模板实例化,编译期根据类型生成独立函数版本,不依赖虚函数、无运行时开销;典型实现为函数模板、类模板与CRTP;需警惕隐式实例化失败、SFINAE误用及代码膨胀。