如果我有两个功能,如:
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
?
答案 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);
并且您在同一范围内有两个名称用于同一个向量。