gpt4 book ai didi

c++ - 当您从 C++ 函数返回引用时会发生什么?

转载 作者:行者123 更新时间:2023-12-01 14:37:05 26 4
gpt4 key购买 nike

问题不在于为什么以及何时应该使用它。我想知道在下层到底发生了什么,因为我们这样做得到了非常好奇的结果。

例如,这样使用就很清楚了:

int& func(int& num) {
++num;
return num;
}

这里我们通过引用传递一个变量,更改它,然后返回对同一变量的新引用。

但是如果我们这样做会发生什么呢? :

int& func(int num) {
++num;
return num;
}

当函数func完成时,变量num不再存在。 C++ 不允许在未使用变量初始化引用的情况下创建引用。但在这种情况下,编译和执行都没有错误。例如,如果我们不初始化 int,我们会得到随机行为:

int num;
std::cout << num; // gives 6422352 or sth like that

但是如果我们用上面的函数初始化它:

int num1(1);
int num2(func(num1));
cout << num2; // console freezes for a second or two, and execution stops, without any errors

所以我一直想知道:

  1. 为什么我们没有收到返回对不存在对象的引用的编译错误?
  2. 分配给 num2 的是什么?
  3. 为什么它不会导致任何执行错误,而只是停止程序?

最佳答案

从函数返回对局部变量的引用没有任何问题。然而,使用该引用会导致未定义的行为。

关于c++ - 当您从 C++ 函数返回引用时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63535786/

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