Archiv verlassen und diese Seite im Standarddesign anzeigen : -> operator in c++ und verkettete listen
ich möchte in mein aktuelles c++ programm eine verkettete liste einbauen. doch in meinem tutorial verstehe ich nur bahnhof. das hauptproblem ist dass ich nicht verstehe was der -> operator bewirkt (bsp. this->x = 3;). wär cool wenn mir das mal einer erklären könnte.
danke
mfg
leifg
also das funktioniert folgendermaßen
this ist der zeiger auf sich selber, sprich die eigene klasse. der '->' operator ist für den zugriff auf eine variable, wobei der linke teil ein zeiger ist. this ist wie bereits erwähnt ein zeiger.
this->x bedeutet, dass auf die variable x, welche in der klasse definiert sein muss, zugegriffen wird. wenn du bereits eine variable namens x definiert hast in der funktion, dann kannst du so die namensverwirrung a) für dich selber und b) für den compiler aufheben.
ich hoffe das hilft dir
>> trag
sorry ich hab mich ein bisschen unverständlich ausgedrückt. das mit this war nur ein beispiel. erstmal muss ich richtig verstehen was der -> operator macht.
hier ein etwas eifacheres beispiel:
class A
{
public:
A() {};
~A() {};
A(int i) { x = i;}
int x;
};
A a(3);
A* pa = &a;
A* pb, *pc;
a.x = 4;
pa->x = 4; // was mach das?
pb = new A;
pb->x = 4; // und das?
pc = new A[10]
wo zeigt die zeigervariable pa und pb hin?
danke im voraus
A a(3);
A* pa = &a;
das hier bedeutet, dass pa auf a zeigt und somit die gleiche x variable in folge ändern wird (siehe weiter unten)
A* pb, *pc;
a.x = 4;
pa->x = 4; // was mach das?
a.x weist der x komponente von a den wert 4 zu
pa->x weist der x komponente von a (da pa auf a zeigt) auch 4 zu, also kein unterschied.
der unterschied zwischen -> und . ist, ob es sich um einen zeiger handelt oder nicht.
pb = new A;
pb->x = 4; // und das?
tja und hier wird der x komponente von pb (was gar nix mit pa oder a zu tun hat) der wert 4 zugewiesen.
pc = new A[10]
und das wird nicht funktionieren, da pc vom typ A** sein müsste! (10 zeiger auf 10 objekte, dazu muss pc wieder ein zeiger sein, irre kompliziert klingt das wieder, ich weiss)
hoffe, das hilft dir
>> trag
Um es ganz kurz zu machen:
zeiger->element;
// ist identisch mit:
(*zeiger).element;
Der Pfeiloperator "->" ist also ein Ersatz für den Zeigeroperator * in Kombination
mit dem Punktoperator.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.