2010-11-05 10 views
9

Powiel możliwe:
Why 'this' is a pointer and not a reference?Dlaczego jest to wskaźnik

Dlaczego this wskaźnik raczej rhan odniesienia? Czy kiedykolwiek będzie to NULL?

+0

Może być pusty. Wyobraź sobie, że metoda * nie-wirtualna * jest wywoływana po ... no, NULL :-) To może być dobrze w dziedzinie C++ UB, ale widziałem, jak to się zdarza wcześniej. –

+0

Dokładny duplikat [Dlaczego "to" jest wskaźnikiem, a nie odniesieniem?] (Http://stackoverflow.com/questions/645994/why-this-is-a-pointer-and-not-a-reference) i garść innych pytań. –

+3

@pst: Tak, to byłoby dobrze w dziedzinie nieokreślonego zachowania. –

Odpowiedz

7

Dlaczego "to" nie jest odniesieniem?

odpowiedź Zobacz Bjarne za here

Ponieważ "to" został wprowadzony do C++ (naprawdę do C z klasami), zanim te zostały dodane. Ponadto, wybrałem "to", aby śledzić użycie Simula, a nie (później) użycie Smalltalk "self".

2

Dlaczego this wskaźnik?

Bo to jest, i to jest właśnie droga język programowania został zaprojektowany. (Myślę, że to także dlatego, że zostało z C, ale nie jestem pewien).

zamiast odniesienia?

Jeśli potrzebujesz to odniesienie, użyj *this.

nigdy nie może być NULL?

... nie. Jak to mogło się stać?

+2

to uzasadnione pytanie - czy nigdy nie może być puste lub ponownie przypisane, dlaczego nie jest odniesieniem? –

+0

dlaczego nie może być wskaźnikiem? Nie ma takiej przewagi, ponieważ konwersja dotyczy jednego znaku (* lub &). –

+0

@AlexanderRafferty Ponieważ w ten sposób C++ przekazuje odniesienia. – asaelr

Powiązane problemy