例えば、この関数はfを次のように定義されて:あなたは、この一時的なint型への参照を割り当てるカント知っているようなぜ一時変数ではなく、ローカル変数の参照によって関数を返すことができますか? C++
int f(int x){return x;}
:
int& rf=f(2);// this will give an error
が、私はこのように私の関数fを再定義した場合:
int& f(int x){return x;}
f(2);// so now f(2) is a reference of x, which has been destroyed
私の質問は:どのようにコンパイラは、 statary(最初のケースのint)の後で破壊されるorary。一方、コンパイラはreturn
の後にこのファイルが破壊されることを知っていますが、参照f(2)〜x
を作成することができます。
これはUBです(とにかく、参照にアクセスしています)。正気のコンパイラが警告します。 –