0

可能重复:
C++ 返回对局部变量的引用

我无法在以下代码中正确传递引用。

myint& myint::abs()
{
  myint i=*this;
  myint &t=i;
  t.setsign(0);
  return t;      
}

引用 't' 在 abs() 函数中被正确修改。我打印了它,发现它是正确的。但是 main() 中收到的值总是错误的。

我在 main() 中使用了以下语句

myint a("-12"); /*gives a=-12 with each digit in a linked list node. separate data field for sign.*/
myint b=a.abs();

b 收到的是 0,默认值。

提前致谢。

4

1 回答 1

1

您正在返回对局部变量“i”的引用。当您从函数返回时,我已经超出范围,因此使用对它的引用会导致未定义的行为。

于 2012-10-06T15:13:48.153 回答