Domanda

la domanda è semplice ... c'è qualche differenza nell'usare questo- > la tua variabile o la tua variabile direttamente per qualche motivo?

Non sto riscontrando alcun problema, ma sto usando this- > molto e vorrei sapere se c'è qualche differenza prima di andare oltre.

Ho visto un commento su un post qui e non ricordo quale thread, ma la persona ha detto qualcosa sull'uso della parola chiave " this " ;.

Personalmente, trovo carino da usare rispetto alla variabile direttamente. Rende il codice più semplice e carino.

Joe

È stato utile?

Soluzione

No, non c'è alcuna differenza reale, è semplicemente un qualificatore di ambito. Tuttavia, supponi un metodo

void SetFoo( Foo foo )
{
    this->foo = foo;
}

dove this- > foo è un membro privato. Qui ti permette di prendere un parametro con lo stesso nome di una variabile di classe / istanza.

Altri suggerimenti

Nella maggior parte dei casi non c'è differenza. Ma ci sono situazioni in cui fa la differenza:

class foo
{
    int i;
    void bar() {
        int i = 3;
        i; // refers to local i
        this->i; // refers to the member i
    }
};

Inoltre, con i modelli potresti dover qualificare un membro con this- > in modo che la ricerca del nome sia ritardata:

template<typename T>
struct A
{
    int i;
    T* p;
};

template<typename T>
struct B : A<T>
{
    void foo() {
        int k = this->i; // here this-> is required
    }
};

Un compilatore che esegue correttamente la "ricerca in due fasi" si lamenterà nel caso in cui rimuova " this- > " che non sa cosa dovrei essere. & Quot; this- > " dice che è un membro di una classe base. Poiché la classe di base dipende da un parametro modello, la ricerca viene ritardata fino a quando il modello di classe non viene istanziato.

Trovo che l'uso di this renda il mio codice più leggibile, ma non c'è motivo per cui tu debba farlo. Se guardi il codice assembler generato dal tuo compilatore, dovrebbe essere funzionalmente (e di solito letteralmente) identico.

Fondamentalmente, quando viene chiamata la funzione, viene passato un argomento nascosto this che viene quindi usato per capire quali variabili sono dove. Se usi direttamente le variabili, senza un this- > , non stai facendo altro che usare un po 'di zucchero sintattico.

Questa è stata una specie di domanda e risposta su C # qui e penso che la risposta (almeno la mia) sia la stessa. È preferenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top