2010-11-05 14 views
9

Eventuali duplicati:
Why 'this' is a pointer and not a reference?Perché questo è un puntatore

Perché this un puntatore, di riferimento piuttosto rhan? Può mai essere NULL?

+0

Può essere nullo. Immagina il caso in cui un metodo * non-virtuale * viene invocato su ... beh, NULL :-) Questo potrebbe essere benissimo nel regno di UB C++, ma l'ho visto accadere prima. –

+0

Esatto duplicato di [Perché 'this' è un puntatore e non un riferimento?] (Http://stackoverflow.com/questions/645994/why-this-is-a-pointer-and-not-a-reference) e una manciata di altre domande. –

+3

@pst: Sì, sarebbe nel regno del comportamento indefinito. –

risposta

7

Perché "questo" non è un riferimento?

risposta di See Bjarne here

Perché "questo" è stato introdotto in C++ (realmente in C con le classi) prima sono stati aggiunti riferimenti. Inoltre, ho scelto "questo" per seguire l'uso di Simula, piuttosto che l'uso (successivo) di Smalltalk di "sé".

2

Perché this un puntatore?

Perché è, ed è proprio il modo in cui il linguaggio di programmazione è stato progettato. (Penso che sia anche perché è stato lasciato da C, ma non ne sono sicuro).

anziché un riferimento?

Se avete bisogno di un tale riferimento, utilizzare *this.

Può mai essere NULL?

... no. Come potrebbe essere?

+2

è una domanda ragionevole - se non può mai essere nullo o riassegnato perché non è un riferimento? –

+0

perché non può essere un puntatore? Non c'è alcun vantaggio che sia perché la conversione coinvolge un carattere (* o &). –

+0

@AlexanderRafferty Perché il modo C++ sta passando i riferimenti. – asaelr

Problemi correlati