ローカル オブジェクトへの参照を返す関数を作成しました。
Fraction& operator*(Fraction& lhs, Fraction& rhs)
{
Fraction res(lhs.num*rhs.num,lhs.den*rhs.den);
return res;
}
関数が返された後、 res オブジェクトは破棄され、受信オブジェクトは Ex-Fraction オブジェクトを指し、それを使用すると未定義の動作が発生します。この機能を使用しようとしている人は誰でも問題に直面します。
コンパイラがこの種の状況をコンパイル時エラーとして検出できないのはなぜですか?