资讯中心

C++笔记之程序员应主动添加noexcept说明符的场景汇总

📅 2026/8/2 16:55:51
C++笔记之程序员应主动添加noexcept说明符的场景汇总
C++笔记之程序员应主动添加noexcept说明符的场景汇总code review!文章目录C++笔记之程序员应主动添加noexcept说明符的场景汇总1. 移动构造函数 / 移动赋值运算符(最高频)2. swap 函数3. 析构函数(通常不需手动加,但特殊情况需注意)4. 内存释放相关函数:operator delete / operator delete[]5. 简单的 Getter / 查询类成员函数6. 自定义分配器(Allocator)的关键接口7. 哈希函数 std::hash 特化8. 移动语义相关的构造函数整体链条9. 线程相关:线程函数、信号处理函数10. 与 C 交互的接口 / extern "C" 函数11. 总结口诀(面试可直接背)12. 面试高频追问 答案要点13. 移动构造函数 noexcept 辨析13.1 责任划分:程序员的承诺与 STL 的决策13.1.1 程序员的责任(主动行为)13.1.2 STL 的决策(被动行为)13.1.3 完整协作流程13.2 为什么必须加 noexcept13.2.1 强异常安全保证机制13.2.2 性能影响13.2.3 代码示例13.3 不能加 noexcept 的场景与后果13.3.1 运行期崩溃风险13.3.2 契约精神13.4 工程实践建议13.5 总结1. 移动构造函数 / 移动赋值运算符(最高频)最重要的场景。若移动构造函数保证不抛异常,必须显式标记noexcept,否则std::vector等容器扩容时不会使用移动,而是退化为拷贝,白白损失性能。classWidget{public:Widget(Widgetother)noexcept;// 必须加Wid