Ho scritto una funzione che restituisce un riferimento all'oggetto locale.Funzione che restituisce un riferimento all'oggetto locale
Fraction& operator*(Fraction& lhs, Fraction& rhs)
{
Fraction res(lhs.num*rhs.num,lhs.den*rhs.den);
return res;
}
Dopo funzione restituiscono res oggetto viene distrutto e ricezione oggetto punterà oggetto Ex-Frazione portando ad un comportamento indefinito di utilizzarlo. Chiunque utilizzi questa funzione si troverà ad affrontare un problema.
Perché il compilatore non è in grado di rilevare questo tipo di situazione come errore di compilazione?
Generalmente può - g ++ stampa qualcosa come 'warning: riferimento alla variabile locale 'x' restituita [abilitata di default]'. Potrebbe dipendere dal compilatore che stai usando e/o dagli switch del compilatore che hai usato. –
Questo è ciò che gli avvisi sono per, il tempo di trattare tutti gli avvisi come errore. – yngccc
Nota è possibile tornare con riferimento costante e andrà bene – dchhetri