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?
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?
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".
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?
es ist eine vernünftige Frage - wenn es nie Null oder neu zugewiesen werden kann, warum ist es nicht eine Referenz? –
Warum kann es nicht ein Zeiger sein? Es hat auch keinen Vorteil, weil die Konvertierung zwischen einem Zeichen (* oder &) besteht. –
@AlexanderRafferty Weil der C++ Weg Referenzen passiert. – asaelr
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. –
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. –
@pst: Ja, das wäre gut in den Bereich des undefinierten Verhaltens. –