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 received はデフォルト値の 0 です。

前もって感謝します。

4

1 に答える 1

1

ローカル変数 'i' への参照を返しています。関数から戻ったときに i が範囲外になったため、それへの参照を使用すると未定義の動作が発生します。

于 2012-10-06T15:13:48.153 に答える