c ++按值返回vs按引用返回

时间:2018-02-23 15:37:18

标签: c++

如果我有两个功能,如:

1

vector<Student_Info> extract_failed(vector<Student_Info>& students) {
    return students;
}

2

vector<Student_Info>& extract_failed(vector<Student_Info>& students) {
    return students;
}

将函数1设为returning by value是否正确,这意味着将创建并返回students的副本,函数2为returning by reference

2 个答案:

答案 0 :(得分:0)

  

假设函数1按值返回是否正确,这意味着将创建并返回学生副本,并通过引用返回函数2?

是的,这是正确的。另一种表达它的方式,我更喜欢说是1返回一个值,2返回一个引用。

答案 1 :(得分:0)

如果您计划使用返回值(类似print(extract_failed(students));for(const auto& s : extract_failed(students)),那么当前形式的 2。会有效。

同时,某些情况可能会令人困惑,因为您可以执行类似

的操作
auto& new_students = extract_failed(students);

并且您在同一范围内有两个名称用于同一个向量。