私はすでに、プログラムがスコープから外れると、変数が破壊されることを知っています。しかし、これは私が次のスニペットにコードをしようとしたときに発生していないようでした:ローカル変数への参照を返しても問題ありませんか?
int& somethin()
{
int x1 = 4;
return x1;
}
int main() {
int x11;
x11 = somethin();
cout << x11 << endl;
return 0;
}
は驚くべきことに、出力は次のようになります。4
私は参照変数として「X11」を宣言したときに、私が得る一方でゴミ値。
説明はありますか?
注:このテストを何度も繰り返しました。私はそれが運についてだとは思わない。 注:同じ質問をStackOverflowで以前に聞いた人がいますが、テスターについての答えは幸運でした。
は、実行スタックがマシンにどのように機能するかを考えてみて - ほとんどのC++ランタイム環境がないゼロ飛び出しスタック・フレームをやる、それがなぜ参照の目標値です「4」はまだそこにあります - それはあなたがその行動に依存するべきではありません。 – Dai
[私は0を持っています](http://cpp.sh/243to) – yrHeTaTeJlb
これは未定義の動作です。つまり、特定の動作が起こる可能性があります。それが危険な理由です。 – StoryTeller