“零法则”:C++ 资源管理经验法则之一——如果类不直接管理资源(如裸指针、文件句柄、互斥量等),就不要自己编写析构函数、拷贝/移动构造函数、拷贝/移动赋值运算符;让编译器生成的默认版本工作即可。通常通过使用 RAII 类型(如 std::string、std::vector、std::unique_ptr)来实现。
/ˌruːl əv ˈzɪəroʊ/ (AmE), /ˌruːl əv ˈzɪərəʊ/ (BrE)
We follow the rule of zero in this class.
我们在这个类中遵循“零法则”。
By applying the rule of zero and storing resources in standard library types, the code avoids manual memory management and reduces subtle copy/move bugs.
通过应用“零法则”,并把资源交给标准库类型管理,这段代码避免了手动内存管理,也减少了隐蔽的拷贝/移动错误。
“Rule of Zero”出自 C++ 社区对“Rule of Three(拷贝三法则)”与“Rule of Five(移动五法则)”的进一步总结:与其小心翼翼地手写这些特殊成员函数,不如把资源管理交给成熟的 RAII 成员对象,从而让“特殊成员函数的数量变成零”。这里的“zero”强调的是“自己不需要写”,而不是“类没有任何函数”。