2010-11-05 12 views
9

Duplicar posibles:
Why 'this' is a pointer and not a reference?¿Por qué es un puntero

¿Por qué es this un puntero, en lugar de referencia rhan? ¿Alguna vez puede ser NULL?

+0

Puede ser nulo. Imagine el caso cuando se invoca un método * no virtual * ... bueno, NULL :-) Esto podría estar dentro del dominio de C++ UB, pero lo he visto antes. –

+0

Duplicado exacto de [¿Por qué 'esto' es un puntero y no una referencia?] (Http://stackoverflow.com/questions/645994/why-this-is-a-pointer-and-not-a-reference) y un puñado de otras preguntas. –

+3

@pst: Sí, eso sería bueno en el ámbito del comportamiento indefinido. –

Respuesta

7

¿Por qué "este" no es una referencia?

Véase la respuesta de Bjarne here

Debido a que "este" se introdujo en C++ (realmente en C con Clases) antes de añadir referencias. Además, elegí "esto" para seguir el uso de Simula, en lugar del uso (posterior) de Smalltalk del "yo".

2

¿Por qué es this un puntero?

Debido a que es, y es sólo la forma en el lenguaje de programación fue diseñado. (Creo que también es porque quedó de C, pero no estoy seguro).

en lugar de una referencia?

Si necesita una esta referencia, utilice *this.

puede nunca ser NULL?

... no. ¿Como puede ser?

+2

es una pregunta razonable: si nunca puede ser nula o reasignada, ¿por qué no es una referencia? –

+0

¿por qué no puede ser un puntero? No hay ninguna ventaja de que sea porque la conversión entre involucra un carácter (* o &). –

+0

@AlexanderRafferty Porque la forma C++ pasa referencias. – asaelr

Cuestiones relacionadas