docs(zh-CN): sync Chinese docs with latest upstream changes

This commit is contained in:
neo
2026-03-21 12:55:58 +08:00
parent 0af0fbf40b
commit e73c2ffa34
85 changed files with 11028 additions and 747 deletions

View File

@@ -0,0 +1,52 @@
---
paths:
- "**/*.cpp"
- "**/*.hpp"
- "**/*.cc"
- "**/*.hh"
- "**/*.cxx"
- "**/*.h"
- "**/CMakeLists.txt"
---
# C++ 模式
> 本文档基于 [common/patterns.md](../common/patterns.md) 扩展了 C++ 特定内容。
## RAII资源获取即初始化
将资源生命周期与对象生命周期绑定:
```cpp
class FileHandle {
public:
explicit FileHandle(const std::string& path) : file_(std::fopen(path.c_str(), "r")) {}
~FileHandle() { if (file_) std::fclose(file_); }
FileHandle(const FileHandle&) = delete;
FileHandle& operator=(const FileHandle&) = delete;
private:
std::FILE* file_;
};
```
## 三五法则/零法则
* **零法则**:优先使用不需要自定义析构函数、拷贝/移动构造函数或赋值运算符的类。
* **五法则**:如果你定义了析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数或移动赋值运算符中的任何一个,那么就需要定义全部五个。
## 值语义
* 按值传递小型/平凡类型。
*`const&` 传递大型类型。
* 按值返回(依赖 RVO/NRVO
* 对于接收后即被消耗的参数,使用移动语义。
## 错误处理
* 使用异常处理异常情况。
* 对于可能不存在的值,使用 `std::optional`
* 对于预期的失败,使用 `std::expected`C++23或结果类型。
## 参考
有关全面的 C++ 模式和反模式,请参阅技能:`cpp-coding-standards`