In C++ ist das eigentlich sehr identisch. Self ist hier der 'this' Pointer. Also ein Zeiger auf das aktuelle Objekt. Der Unterschied zwischen
<object>.<function>() und <object-pointer>-><function>() ist halt, dass -> eine Abkürzung ist für
*<object-pointer>.<function>()
*<pointer> holt das Objekt, auf welches der Pointer zeigt, und danach kannst Du die Funktion aufrufen.
Also:
KlassenTyp meinObjekt; // Erzeuge ein Objekt vom Typ 'KlassenTyp'
KlassenTyp * meinObjektPointer; // Erzeuge einen Pointer auf ein Objekt des Typs 'KlassenTyp'
meinObjektPointer = & meinObjekt; // Hole die Adresse des Objekts 'meinObjekt'.
int ergebnis = meinObjekt.rechneWas(); // Rufe eine Funktion von 'meinObjekt' auf
int ergebnis = meinObjektPointer->rechneWas(); // Rufe eine Funktion über den Pointer auf 'meinObjekt' auf