有没有关于何时使用 const 引用作为返回类型是一种好习惯的文章?
这不是关于特定问题的问题,而是更多的教育问题。
我们正处于从初级 C 水平迁移到现代 C++ 的过程中,我和我的同事的任务是指导一群其他人使用 C++,因为我们对这种语言非常熟悉。
我与上述同事就这个问题发生了轻微的争论。手头的例子是一个简单的类:
class Cls
{
private:
vector<int> vec;
public:
Cls() { /* put 3 random values in vec */ }
const vector<int>& getVec() {return vec; }
};
我的论点是:
引用应该用作回报,因为您不会浪费时间复制东西。这是直接加速。
引用应该是 const,因为如果你只返回一个引用,
vec
那么任何人都可以只使用 getter 来改变它,这显然很糟糕。因此,我们需要返回const TYPE&
getter。
我的同事支持只返回vector<int>
并完成它。他的论点是:
- 这是一个不应该从一开始就教授的高级概念。我们现在可以从 getter 中按值返回(并因此生成副本),然后在他们能够理解幕后发生的事情时过渡到引用。(我的观点是,因为我认为使用它是一种非常好的实践,所以应该从一开始就教授和执行它,以便人们习惯这样做,然后我们确保每个人都真正理解 const 引用意味着什么的部分可以在以后出现因为我们可能没有时间让学员达到可以兼顾参考的水平。)
所以我的问题基本上是:
是否有一些关于此主题的良好实践以及何时使用 const 引用而不是值作为返回的文章?
虽然我和我的同事对 C++ 相当满意,但我们都没有专业地使用它,所以......这个问题在行业中是否有标准或惯例?