Come regola generale, si tratta di una questione di convenzioni locali. La maggior parte dei posti che ho visto non usano this->
tranne quando necessario, ed è lo la convenzione che preferisco, ma ho sentito parlare di persone che preferiscono usare lo in modo sistematico.
Ci sono due casi quando è necessario. Il primo è se hai nascosto il nome con lo stesso nome in ambito locale; se ad es. si dispone di un membro denominato toto
e si chiama anche l'argomento della funzione toto
. Molte convenzioni di codifica contrassegnano il membro o gli argomenti per evitare questo caso , ad es. tutti i nomi dei membri iniziano con my
o m_
oppure il nome di parametro inizia con the
.
L'altro caso è che this->
può essere utilizzato in un modello per rendere dipendente il nome . Ciò è rilevante se una classe template eredita da un tipo dipendente e si desidera accedere a un membro della base, ad es.:
template <typename T>
class Toto : public T
{
public:
int f()
{
return this->g();
}
};
Senza la this->
qui, g()
sarebbe un nome non-dipendente, e il compilatore sarebbe cercarlo nel contesto della definizione del modello, senza prendere la classe di base in considerazione.
fonte
2012-03-06 20:06:46
Attenzione: se 'vin' è una funzione virtuale, quindi' this-> vin() 'e' MyUtopicClass :: vin() 'sono diversi. –
aschepler