gpt4 book ai didi

c++ - 为什么auto y = reference_to_x的地址和x的地址不一样?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:00 24 4
gpt4 key购买 nike

假设您有以下代码:

long& fn2(long& another_var1, long another_var2){

another_var1 = another_var1 + another_var2;
another_var2 = another_var2 + another_var1;

return another_var1;
}

int main (){
cout << boolalpha;

long var1 = 5;
long var2 = 10;

auto result = fn2(var1, var2);

cout << &result << endl;
cout << &var1 << endl;
cout << result << endl; //Line 1
cout << (&result == &var1) << endl; //Line 2
}

在您到达 第 2 行 之前,一切都按预期进行,其中返回 false。当你autoresult时,它应该是一个引用变量到another_var1,它是对var1的引用,即它们都应该有相同的地址——它们只是同一内存的别名。查看 第 1 行,返回 15,给人一种它们都一样的错觉。然后,第 2 行 反驳了这一点。

不过,我认为这可能是 auto 的问题。如果您删除 auto 并将其替换为其真正的返回类型 long&,您将获得预期的结果。

谁能解释一下到底发生了什么?

最佳答案

When you auto result, it is supposed to be a reference variable to another_var1

这是你的错误。如果 result 应该是一个引用,那么您必须声明一个引用。像这样:

auto& result = fn2(var1, var2);

关于c++ - 为什么auto y = reference_to_x的地址和x的地址不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223352/

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