C++ 编码标准(C++ Core Guidelines)¶
源自 C++ Core Guidelines 的最新 C++(C++17/20/23)全面编码标准。强制类型安全、资源安全、不可变性和明确性。
使用时机¶
- 编写新的 C++ 代码(类、函数、模板)
- 审查或重构现有 C++ 代码
- 在 C++ 项目中做出架构决策
- 在整个 C++ 代码库中实施一致的样式
- 选择语言特性(例如:
enum与enum class、裸指针与智能指针)
横切原则¶
这些主题贯穿整个指南,并构成基础:
- 处处使用 RAII:将资源生命周期绑定到对象生命周期
- 默认不可变:从
const/constexpr开始;可变性是例外 - 类型安全:使用类型系统在编译时防止错误
- 表达意图:名称、类型和概念必须传达目的
- 最小化复杂性:简单代码才是正确代码
- 值语义与指针语义:优先返回按值或具有作用域的对象
主要规则¶
| 规则 | 摘要 |
|---|---|
| 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