Rar*_*ima 3 c++ oop reference constants
是否有任何文章介绍何时使用 const 引用作为返回类型是一个好习惯?
这不是一个关于特定问题的问题,而是一个教育问题。
我们正处于从 C 的初级水平迁移到现代 C++ 的过程中,我和我的同事的任务是指导其他一组人使用 C++,因为我们对这门语言非常熟悉。
我和这位同事就这个问题发生了轻微的争执。手头的例子是一个简单的类:
class Cls
{
private:
vector<int> vec;
public:
Cls() { /* put 3 random values in vec */ }
const vector<int>& getVec() {return vec; }
};
Run Code Online (Sandbox Code Playgroud)
我的论据来自以下事实:
参考文献应该用作返回,因为您不会浪费时间复制东西。这是直接加速。
引用应该是 const,因为如果你只返回一个引用,vec那么任何人都可以仅使用 getter 来改变它,这显然是不好的。因此我们需要返回const TYPE&吸气剂。
我的同事支持返回vector<int>并完成它。他的论点是:
所以我的问题基本上是:
是否有一些关于此主题的良好实践以及何时使用 const 引用而不是值作为返回值的文章?
虽然我和我的同事对 C++ 相当熟悉,但我们都没有专业地使用过它,所以……业界对于这个问题有标准或惯例吗?
何时按引用返回还是按值返回的决定不仅仅是性能问题,而且是代码语义问题(尽管在使用 C++ 进行编码时性能通常很重要)。
通过引用返回的一些值得注意的示例是:
*this)何时按引用返回的问题实际上可以归结为一个更广泛的问题:如何安全地管理对象的生命周期。关于对象生命周期的 C++ 核心指南是一个值得遵守的好资源。
如果被引用的对象比函数调用的寿命更长,那么通过引用返回它通常是安全的。
所以:
this、具有静态存储持续时间的类成员和对象:可以安全地通过引用返回它关于输入参数 - 它甚至适用于const引用,因为它们可以引用临时变量。例如:
std::string const& badFunc(std::string const& arg) {
return arg; // not a good idea
}
std::string const& x = badFunc("abc");
// now x contains a dangling reference
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4591 次 |
| 最近记录: |