Frage

Ich betrachte die .h-Datei einer Wrapper-Klasse. Und die Klasse enthält ein privates Mitglied:

T* dataPtr;

(wobei T ist wie in template < class T > an der Spitze der H-Datei definiert)

Die Klasse stellt zwei "* Überlastung Operator" Methoden:

T& operator*()
{
   return *dataPtr;
}

const T& operator*() const
{
  return *dataPtr;
}

Beide einfach *dataPtr zurück, aber was bedeutet die Bezeichnung „*dataPtr“ tatsächlich zurückkehrt, in einfachem Englisch? Und wie paßt es mit dem Rückgabetyp „T&“?

War es hilfreich?

Lösung

Der Rückgabetyp T & besagt, dass Sie einen Verweis von einer Instanz eines T-Objekt zurückgeben. dataPtr ist ein Zeiger, die Sie „dereferenzieren“ (den Referenzwert / Instanz eines Zeigers erhalten) mit *.

Andere Tipps

dataPtr ist ein Zeiger auf etwas.

Der Operator * dereferenziert den Zeiger, so * dataPtr (oder statt ‚ist‘, kann man sagen, ‚bezieht sich auf‘ oder ‚ist ein Verweis auf‘) die pointee, dh der Sache, dass dataPtr zu zeigt.

T & bedeutet ‚eine Referenz auf ein Objekt, dessen Typ T‘ (nicht mit T * verwechselt werden, was bedeutet, ‚ein Zeiger auf ein Objekt, dessen Typ T‘).

*DataPtr ist die Ist-Daten, auf die von DataPtr. Beide Operatoren geben einen Hinweis auf T. A Hinweis ist eine Art, die Sie wie ein anderer Name denken sollte es bezieht sich auf den Wert zu. „Unter der Haube“ ist es ähnlich wie ein Zeiger, aber glaube nicht, es auf diese Weise. Es kann nicht Zeiger Mathematik tun, oder „eingeschliffen“ werden. Einer der Betreiber ist const und auf einem const Objekt verwendet, und die andere auf einem normalen Objekt verwendet wird.

Die Wrapper-Klasse scheint wie eine C ++ Zeiger handeln werden.

Operator * dereferenziert den Wrapper, der auf die Sache beurteilen wird es speichert (in dataPtr). Was man bekommt, ist ein Hinweis auf diese Inhalte. Z.B. Sie etwas zu dem Referenz zuweisen

*intWrapper = 42;

Es gibt zwei Operatoren, weil es eine Konstante und eine nicht konstante Version. Wenn Sie dereferenzieren eine konstante Wrapper-Klasse, kann man nicht auf sie (a konstante Referenz (T &) zurückgegeben)

zuweisen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top