Dumme Frage zu Funktionen
-
Also ich habe mich bereits mit Klassen beschäftigt und mir ist aufgefallen, dass es 2 verschiedene Schreibweisen für Funktionen einer Klasse gibt:
Einmal MeineKlasse->MeineFunktion();
und zum Anderen MeineKlasse.MeineFunktion();
Gibt es da einen Unterschied zwischen den beiden. Wenn das ne noob Frage ist dann entschuldige ich mich schon im Vorraus.
Ich konnte nur nichts mit der Punktmethode anfagen, da ich den Borland Builder verwende und dort meist mit -> gearbeitet wird.
-
. bei objekten.
-> bei zeigern auf objekte.also
Foo f; Foo* pf=new Foo; f.bla(); pf->bla();
-
Sorry nochmal das mit zeigern und OBjekten ist mir klar doch was ist da der Unterschied also zwischen Zeiger und Objekt. War das nicht irgendetwas mit dem reservierten Speicher?
-
Zeiger zeigt auf ein Objekt. Mehr nicht. Fang am Besten von vorne und arbeite in der Reihenfolge sonst wird das nichts.
klasse a; klasse *p = & a; (*p).action(); // *p ist das Objekt selber, also Punktoperator p->action(); // p ist ein Pointer also PfeiloperatorMan sieht dass der Pfeil nur eine Vereinfachte Schreibweise ist.
-
f repräsentiert das Objekt selbst. Dh irgendwo im Speicher gibt es einen Bereich, in dem das Objekt untergebracht ist. Diesen Bereich kennt der Compiler nun unter dem Bezeichner f.
pf ist lediglich ein Zeiger, dh eine simple Adresse. Worauf ein Zeiger verweist, ist erstmal unbestimmt. MitFoo* pf=new Foo;wird nun festgelegt, dass der Zeiger auf ein neu erstelltes Objekt verweist. Du könntest pf aber auch wie folgt initialisieren
Foo* pf = &f;Die Speicherbereiche für das Objekt und für den Zeiger sind dabei vollkommen unabhängig voneinander.
-
Gut danke hatte einen völligen Blackout gestern Abend. ICh erinne mich wieder an mein C++ Buch *lol*. Naja auf jedenfall ist es mir jetzt wieder klar.
-
Übrigens, es gibt keine dummen Fragen, bloß dumme Antworten.

Schliesslich ist das hier ja ein Forum, wo einem geholfen werden kann.
Normalerweise jedenfalls.