为什么在这种情况下为什么要为int&f1返回局部变量

时间:2019-03-27 11:19:04

标签: 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

任何解释都非常有帮助。

0 个答案:

没有答案