跳转至

C++ 编码标准(C++ Core Guidelines)

源自 C++ Core Guidelines 的最新 C++(C++17/20/23)全面编码标准。强制类型安全、资源安全、不可变性和明确性。

使用时机

  • 编写新的 C++ 代码(类、函数、模板)
  • 审查或重构现有 C++ 代码
  • 在 C++ 项目中做出架构决策
  • 在整个 C++ 代码库中实施一致的样式
  • 选择语言特性(例如:enum 与 enum class、裸指针与智能指针)

横切原则

这些主题贯穿整个指南,并构成基础:

  1. 处处使用 RAII:将资源生命周期绑定到对象生命周期
  2. 默认不可变:从 const/constexpr 开始;可变性是例外
  3. 类型安全:使用类型系统在编译时防止错误
  4. 表达意图:名称、类型和概念必须传达目的
  5. 最小化复杂性:简单代码才是正确代码
  6. 值语义与指针语义:优先返回按值或具有作用域的对象

主要规则

规则 摘要
P.1 直接表达代码中的想法
P.3 表达意图
P.4 理想情况下,程序应该是静态类型安全的
P.5 编译时检查优于运行时检查
P.8 不要泄漏资源
P.10 优先使用不可变数据而非可变数据
I.1 使接口显式
I.2 避免非 const 全局变量
I.4 使接口精确且强类型化

智能指针与所有权

在现代 C++ 中,使用智能指针代替裸指针: - std::unique_ptr<T> 用于单一所有者 - std::shared_ptr<T> 用于共享所有权 - std::weak_ptr<T> 用于避免循环引用

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC