标签: c++ reference local
我需要确定以下语法:
int& f1(int i, int& j) { int& k = i; j+=i; return k; }
是正确的。
我已经对其进行了测试,令我惊讶的是,它可以编译。
我的理解是,由于我们的函数f1的类型为int&,因此它无法返回局部变量。通过调用该函数,我创建了一个局部变量i。设置int& k = i时,是将k的存储空间设置为i的存储空间。因此k是局部变量,因此不应编译,因为返回了局部变量k。
f1
int&
i
int& k = i
k
任何解释都非常有帮助。