Art*_*Art 4 c++ pointers reference memory-address
假设您有以下代码:
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
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,直到你到达Line 2,false返回的地方.当你auto result,它应该是一个引用变量another_var1,它是一个引用var1,即它们都应该具有相同的地址 - 它们只是同一内存的名称别名.看着Line 1,15被归还,给人一种错觉,他们都是一样的.然后,Line 2反驳说.
不过,我认为这可能是一个问题auto.如果删除auto并用其真实的返回类型替换它long&,则会得到预期的结果.
任何人都可以解释真正发生的事情吗?
当你
auto result,它应该是一个参考变量another_var1
这是你的错误.如果result应该是引用,那么您必须声明引用.像这样:
auto& result = fn2(var1, var2);
Run Code Online (Sandbox Code Playgroud)