2010-11-05 5 views
9

Mögliche Duplizieren:
Why 'this' is a pointer and not a reference?Warum ist das ein Zeiger

Warum ist this ein Zeiger, eher rhan Referenz? Kann es jemals NULL sein?

+0

Es kann null sein. Stellen Sie sich den Fall vor, wenn eine * nicht-virtuelle * Methode aufgerufen wird, wenn ... nun, NULL :-) Dies könnte gut in den Bereich von C++ UB sein, aber ich habe es schon vorher gesehen. –

+0

Genaues Duplikat von [Warum 'dies' ein Zeiger und keine Referenz ist?] (Http://stackoverflow.com/questions/645994/why-this-is-o-pointer-and-not-a-reference) und eine Handvoll anderer Fragen. –

+3

@pst: Ja, das wäre gut in den Bereich des undefinierten Verhaltens. –

Antwort

7

Warum ist "das" keine Referenz?

See Bjarne Antwort here

Denn "diese" wurde in C++ eingeführt (wirklich in C mit Klassen), bevor Referenzen hinzugefügt wurden. Außerdem habe ich "dieses" gewählt, um Simula zu verwenden, anstatt die (spätere) Smalltalk-Verwendung von "self".

2

Warum ist this ein Zeiger?

Weil es ist, und es ist nur die Art und Weise der Programmiersprache entwickelt wurde. (Ich denke es ist auch, weil es von C übriggeblieben ist, aber ich bin mir nicht sicher).

eher als eine Referenz?

Wenn Sie eine dieser Referenz benötigen, verwenden *this.

Kann es nie NULL sein?

... keine. Wie könnte es sein?

+2

es ist eine vernünftige Frage - wenn es nie Null oder neu zugewiesen werden kann, warum ist es nicht eine Referenz? –

+0

Warum kann es nicht ein Zeiger sein? Es hat auch keinen Vorteil, weil die Konvertierung zwischen einem Zeichen (* oder &) besteht. –

+0

@AlexanderRafferty Weil der C++ Weg Referenzen passiert. – asaelr

Verwandte Themen