楼层: 首页/ 软件技术/ 现代 C++/ 最佳实践:五法则与零法则
11

最佳实践:五法则与零法则

Rule of Five / Zero

写管理资源的类,有几个特殊函数(析构、拷贝构造、拷贝赋值、移动构造、移动赋值)。要么全写,要么全不写——这就是著名的"五法则"。而现代 C++ 的更高境界是零法则。

则五法则 vs 零法则

五法则(Rule of Five):如果你需要自己写析构函数(说明你在手动管资源),那拷贝构造、拷贝赋值、移动构造、移动赋值这五个函数你最好都写,行为才一致。

零法则(Rule of Zero):如果你用智能指针、std::string、vector 这些"自带 RAII"的成员,你一个特殊函数都不用写,编译器生成的就完美。这才是现代 C++ 追求的——把资源管理交给标准库,你只管业务逻辑。

三条现代 C++ 军规

① 能用 STL(vector/string)就别自己 new 数组。
② 用 make_unique / make_shared,别裸 new。
③ 大对象传参用 const&,别传值(避免拷贝)。
照着 Google C++ Style Guide 和 C++ Core Guidelines 写,能避开绝大多数坑。