【发布时间】:2020-07-04 10:28:58
【问题描述】:
我知道标题有点含糊,但本质上,我想知道我们是否要为某些 STL 容器(即向量或列表)创建一个包装类,返回某些返回的方法的正确方法是什么对元素的引用。考虑以下代码:
template<typename T>
class wrapper{
private:
std:vector<T> v;
public:
T back() const {
return v.back();
}
};
根据我的理解,back() 方法将返回一个对 vector 中最后一个对象的 const 左值引用,所以如果我们通过副本返回它会发生什么,我们会得到引用的副本还是目的?这是编译器可以作为返回值优化的一部分进行优化的东西吗?
【问题讨论】:
-
wrapper::back() 返回一个右值。您将获得 v 向量中最后一个元素的副本。
标签: c++ stl return rvalue lvalue