Dopo ulteriori test e ricerche su internet credo di aver capito tutto, sono giunto a due conclusioni:
- Il fatto che nella funzione + temp non venga ricopiato in un oggetto di ritorno automatico e quindi non venga richiamato il costruttore di inizializzazione di default è dovuto ad un'ottimizzazione del compilatore: invece di creare inutilmente due oggetti usa direttamente temp come se fosse l'oggetto di ritorno.
- Quando una funzione torna un oggetto questo viene utilizzato nell'operazione/funzione/qualsiasicosa in cui la chiamata era contenuta e poi viene distrutto. Penso che la distruzione del parametro/parametri venga effettuata insieme per ragioni di ottimizzazione.
Spero che questo thread possa essere utile a tutti. Se ho scritto cose sbagliate spero che mi correggerete.
|