PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : -> operator in c++ und verkettete listen



leifg
25-02-2002, 21:45
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

trag
26-02-2002, 08:44
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

leifg
26-02-2002, 15:55
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

trag
26-02-2002, 16:42
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

Catonga
14-05-2003, 21:50
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.