Ho programmato in C++ per molti anni e ho ancora dei dubbi su una cosa. In molti luoghi in altro codice persone che vedo qualcosa di simile:C'è qualche ragione per usare questo->
void Classx::memberfunction()
{
this->doSomething();
}
Se ho bisogno di importare/utilizzare quel codice, ho semplicemente rimuovere la parte this->, e non ho mai visto niente di rotto o avere qualche effetti collaterali.
void Classx::memberfunction()
{
doSomething();
}
Quindi, si conosce qualche motivo per utilizzare tale costrutto?
EDIT: Si noti che sto parlando delle funzioni membro qui, non delle variabili. Capisco che possa essere usato quando vuoi fare una distinzione tra una variabile membro e un parametro di funzione.
EDIT: apparente duplicato: Are there any reasons not to use "this" ("Self", "Me", ...)?
Nessuno sembra menzionare che un altro modo di risolvere i nomi dei membri è utilizzando http://en.wikipedia.org/wiki/Scope_resolution_operator. Per esempio. ClassX :: doSomething(); –
Se applicato a una funzione ha l'effetto di garantire quale versione di una possibile funzione virtuale viene invocata, impedendo il polimorfismo e comunemente utilizzato per chiamare un genitore di una funzione sovrascritta. NON è un equivalente sicuro di questo-> doSomething(). –
È vero, mi ero dimenticato di questo caso! Grazie Andy. –