关于 return-by-value 与 C++ 中的 ref 的指南?

guideline on return-by-value vs ref in C++?

在 C++ 中,我在哪里可以获得 函数 returning 类型决策 的总结性指南?

我知道以下内容:

• 局部变量必须return按值

编辑

• 在重对象上更喜欢按常量引用传递而不是按值传递

但是,我仍然想知道我应该在 (return-by-) 值中选择什么;常量值;参考;可能开发中的 const-ref situations/scenarios?

return-按值:

// built-in
const int foo();
int foo();

// user-defined
const Person foo();
Person foo();

return-参考:

// built-in
const int& foo();
int& foo();

// user-defined
const Person& foo();
Person& foo();

使用 RVO(Return 价值优化)和 Copy elision you can and should return "by-value". Even for super big objects. Please see also here and here

但是:没有一般规则。一如既往,这取决于。

但是通过上面的介绍,你应该会有更好的理解。