作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设您有以下代码:
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
。当你auto
result
时,它应该是一个引用变量到another_var1
,它是对var1
的引用,即它们都应该有相同的地址——它们只是同一内存的别名。查看 第 1 行
,返回 15,给人一种它们都一样的错觉。然后,第 2 行
反驳了这一点。
不过,我认为这可能是 auto
的问题。如果您删除 auto
并将其替换为其真正的返回类型 long&
,您将获得预期的结果。
谁能解释一下到底发生了什么?
最佳答案
When you
auto result
, it is supposed to be a reference variable toanother_var1
这是你的错误。如果 result
应该是一个引用,那么您必须声明一个引用。像这样:
auto& result = fn2(var1, var2);
关于c++ - 为什么auto y = reference_to_x的地址和x的地址不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223352/
我是一名优秀的程序员,十分优秀!