gpt4 book ai didi

c++ - 通过引用返回的变量范围

转载 作者:行者123 更新时间:2023-12-01 14:53:52 24 4
gpt4 key购买 nike

在以下代码中,在str中创建了一个字符串fun(),随着fun()结束,该变量超出了范围。因此,对其的引用应该无效,并引发一些错误或垃圾值。但是该程序运行良好。为什么?我预计会出现一些错误,因为返回了对fun()的局部变量的引用,但是代码运行正常。

#include <iostream> 
using namespace std;
string& fun(){
string str="ag";
string &q=str;
cout<<q<<" "<<&q<<endl;
return q;
}
int main(){
string &s=fun();
cout<<s<<" "<<&s<<endl;
return 0;

}

最佳答案

引用所指的内容不会超过实际对象。

fun函数中,您将返回对将要超出范围/被销毁的对象的引用。这不会很好地结束。

但是,由于您正在执行的操作是不确定的行为;任何结果都可以。但是您不能保证结果会是什么。

引用只是别的东西的别名。它并没有使它所指的东西活着。

关于c++ - 通过引用返回的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59583627/

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