CppCoreGuidelines F.49 不要返回 const T
06 July 2022
F.49: Don’t return const T
理由
返回值类型不建议标记成 const
。把返回值标记为 const
已经是一个过失的写法了,还会对移动语义造成影响。
例子
const vector<int> fct(); // bad: that "const" is more trouble than it is worth void g(vector<int>& vx) { // ... fct() = vx; // prevented by the "const" // ... vx = fct(); // expensive copy: move semantics suppressed by the "const" // ... }
争论的焦点是这样的。认为返回值类型应该是 const
的那帮人,他们觉得这样可以避免不小心赋值给临时变量。而认为不应该加 const
的一帮人则认为加了
const
会影响移动语义。
强化
找到返回 const
的函数。建议去掉 const
,返回非 const
值。