C++ Core Guidelines是由Stroustrup、Sutter等专家制定的现代C++实践规范,强调类型安全与资源安全,主张RAII、智能指针、span替代裸数组,并提供VS/Clang-Tidy等工具支持渐进落地。

C++ Core Guidelines 是由 Bjarne Stroustrup、Herb Sutter 等 C++ 专家共同制定的一套现代 C++ 编程实践规范,目标是帮助开发者写出更安全、更清晰、更高效、更易维护的代码。它不是强制标准,但被广泛视为 C++20/17 工程实践的事实基准。
核心关注点:类型安全与资源安全
指南把“静态类型安全”和“资源安全”放在首位。这意味着:
- 尽可能让类型系统在编译期捕获错误(比如用 enum class 替代裸 int 枚举)
- 杜绝资源泄漏——内存、文件句柄、锁等都应通过 RAII 自动管理
- 避免裸指针和 new/delete,优先使用 std::unique_ptr、std::shared_ptr 或容器
- 用 gsl::span 或 std::span(C++20)替代原始数组+长度参数,防止越界
实用规则直接对应常见坑点
很多警告(如 Visual Studio 的 C26426、C26494)就来自这套指南,直击真实开发痛点:
- C26426:禁止全局对象调用非常量表达式函数初始化(避免静态初始化顺序问题)
- C26494:变量必须初始化(Type.5),哪怕只是 = {}
- C26485:禁止隐式数组退化为指针(Bounds.3),强制显式传递范围信息
- 推荐用 [[nodiscard]] 标记不应被忽略的返回值,比如错误码或临时对象
不是理论手册,而是可落地的工程工具
它配套有实际可用的检查工具:
立即学习“C++免费学习笔记(深入)”;
- Visual Studio 内置 C++ Core Guidelines 检查器(通过 NuGet 包 Microsoft.CppCoreCheck 启用)
- Clang-Tidy 提供 cppcoreguidelines- 前缀的一系列检查项
- 《C++ Core Guidelines 解析》这类书把每条规则配以 C++17/20 示例,讲清“为什么这么写”和“不这么写的代价”
- 规则设计支持渐进采用——你可以先启用几条高危项(如内存、边界、初始化),再逐步扩展
基本上就这些。它不复杂但容易忽略,关键是把规则变成日常编码习惯,而不是只在 Code Review 时想起来。











