CppCoreGuidelines Con.1 默认把对象设置为不可变
17 August 2023
“By default, make objects immutable”
理由
更容易对不可变对象进行推理分析。只有在需要修改对象值的地方把对象设置为可变数据。使用不可变对象,可以避免偶然的或者很难注意到的值发生改变。
例子
for (const int i : c) cout << i << '\n'; // just reading: const for (int i : c) cout << i << '\n'; // BAD: just reading, may change
例外
通过值传递的函数参数不太会被改变。所以也很少设置为 const
。为了避免混淆,为了减少误报,请不要在函数参数上应用此规则指南。
void f(const char* const p); // pedantic void g(const int i) { ... } // pedantic
注意,函数参数其实是函数的局部变量,所以修改这些参数只是修改局部数据。
强化
标记那些非 const
的,但是值并不改变的变量。(为了避免误报,请排除函数参数)