Dire che ho la seguente classe:Sarà una classe vuota essere ottimizzato via
class A{ };
E poi nel mio codice ho una funzione:
A foo(){
A ret;
//Do stuff
return ret;
}
E allora io uso la funzione più tardi .. ..
Un compilatore ottimizzatore (come g++
) tratta solo lo foo()
come una funzione void
e salta effettivamente l'allocazione della memoria per l'oggetto vuoto? Potrebbe non farlo perché anche una classe vuota ha una dimensione di 1.
Anche se non può essere ottimizzato (semanticamente), può essere restituito in un registro. In tal caso, perché ti importa se è ottimizzato o no? – StoryTeller
@StoryTeller Perché voglio sapere se restituire una classe vuota mi fa male nel restituire il nulla – DarthRubik
Ti fa male come? Non è veloce come semplicemente omettendo un valore di ritorno, certo. Ma difficilmente sembra un collo di bottiglia nelle prestazioni. – StoryTeller