返回一个对象vs通过引用返回一个对象

时间:2014-03-03 08:05:38

标签: c++

之间有什么区别吗?
vector<int> function(vector<int>& input) {
    // do something with input then return it
    input.push_back(3);
    return input;
}

vector<int>& function(vector<int>& input) {
    // do something with input then return it
    input.push_back(3);
    return input;
}

重要吗?因为当您将函数的返回值分配给新变量时,矢量会被复制:

vector<int>result = function(some_vector);

2 个答案:

答案 0 :(得分:6)

存在差异,第二个函数可以在语句中充当左值。

function(some_vector).push_back(4);

这里不复制向量,修改原始的'some_vector'。此外,性能方面,这可能会产生很大的不同。

答案 1 :(得分:0)

使用reference作为参数允许返回函数void

的返回类型
void function(vector<int>& input) {
    // do something with input then return it
    input.push_back(3);
    return input;
}

顺便提一下,push_back类的成员函数std::vector的返回类型为void

返回对向量的引用允许将函数调用与类std :: vector的其他方法链接在一起。例如

function( v ).push_back( value );