在 main() 中错误地接收到 C++ 引用

标签 c++ reference

<分区>

Possible Duplicate:
C++ Returning reference to local variable

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

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

在 abs() 函数中正确修改了引用“t”。我已经打印出来,发现它是正确的。然而,在 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,默认值。

提前致谢。

最佳答案

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

关于在 main() 中错误地接收到 C++ 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760962/

相关文章:

c++ - 要引用的默认值,c++

java - 调试和正常执行模式之间的不同行为 - WeakReference 处理

javascript - 复制变量javascript

C++如何将参数包存储为变量

java - 如何在多个类之间传递对象? java

c++ - 临时绑定(bind)到聚合初始化结构成员的生命周期

c++ - 应用中的歧义

c++ - 使用制表符和空格读入文件

c++ - 有没有一种在集合上调用 lambda 函数的单行方法?

c++ - boost::text_oarchive 对象的序列化堆栈损坏