Così stavo scrivendo del codice, e ho avuto qualcosa di simile:Esiste un modo corretto per restituire una nuova istanza di oggetto mediante riferimento in C++?
class Box
{
private:
float x, y, w, h;
public:
//...
Rectangle & GetRect(void) const
{
return Rectangle(x, y, w, h);
}
};
Poi più avanti nel codice:
Rectangle rect = theBox.GetRect();
che ha lavorato nella mia generazione di debug, ma in versione c'erano "problemi "restituendo quel rettangolo per riferimento - ho fondamentalmente un rettangolo non inizializzato. La classe Rectangle ha un operatore an = e un costruttore di copie. Senza entrare nel motivo per cui si è rotto, sono in realtà più interessato al modo corretto di restituire un oggetto (nuovo) tramite il riferimento allo scopo di assegnando la copia a una variabile. Sono solo sciocco? Non dovrebbe essere fatto? So che posso restituire un puntatore e quindi effettuare il dereferimento sull'assegnazione, ma preferirei di no. Una parte di me ha l'impressione che il ritorno di valore si traduca in una copia ridondante dell'oggetto: il compilatore lo calcola e lo ottimizza?
Sembra una domanda banale. Mi sento quasi in imbarazzo Non lo so dopo molti anni di codifica in C++ quindi spero che qualcuno possa chiarirlo. :)
Si noti che non v'è alcun incarico nel codice. –