gpt4 book ai didi

c++ - 将局部变量分配给引用参数

转载 作者:太空狗 更新时间:2023-10-29 23:26:39 24 4
gpt4 key购买 nike

来自 C,Accelerated C++ 第 5 章中的这个示例引起了我的注意:

vector<Student_info> extract_fails(vector<Student_info>& students) {

vector<Student_info> pass, fail;

for (vector<Student_info>::size_type i = 0; i != students.size(); ++i)
if (fgrade(students[i]))
fail.push_back(students[i]);
else
pass.push_back(students[i]);

students = pass;
return fail;
}

由于返回了fail,我知道它是一个局部变量不是问题。但为什么 pass 能够使其超出本地范围?

最佳答案

您可能认为引用 students 被“重新引用”到局部变量 pass。不是这种情况。相反,operator= 正在通过 students 传入的现有对象上被调用,并且来自 pass 的数据被复制到它。

由于您来自 C,您可能对指针比对引用更熟悉。假设 students 被声明为一个指针,即

vector<Student_info>* students

您的问题暗示您认为您引用的代码等同于以下内容

students = &pass;

实际上它等同于这个

*students = pass;

事实上,这两个操作中的第一个不能在引用上执行——引用不能被“重新引用”。

关于c++ - 将局部变量分配给引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com