Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

13.02.2004, 11:51

Const???

hallo kann mir jemand sagen was folgendes const bedeutet?

int GetAge() const { return itsAge; }
char operator[](unsigned short offset) const;


vielen dank im voraus

der dude ;-)[/b]

2

13.02.2004, 12:30

Damit gibst du an das diese Methode keine Member der Klasse verändert. Wie halt z.B. der + Operator. Er erzeugt ein Temporäres Objekt das dann mit dem Wert der eigentlichen Klasse addiert wird. Die Werte der Klasse selber bleiben dabei Unberührt (Read Only ;D )


Des weiteren können dadurch vieleicht Optimierungen vom Compiler gemacht werden. Daher gilt immer dort "const" zu verwenden wo es nur geht.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

3

13.02.2004, 12:37

Es ist zwar richtig, was DragonMaster gesagt hat, aber jetzt wird die Frage kommen, wieso man dem Compiler mitteilen sollte, das eine Funktion keine Member verändert.

Ganz einfach

Quellcode

1
2
3
const Foo foo;

foo.methode();  // um den Aufruf geht's


Wenn 'methode' const ist, ist der Aufruf erlaubt, sonst nicht. Kurz: Du darfst auf konstanten Objekten nur konstante Methoden aufrufen.


DragonMaster's Beispiel 'operator +' war allerdings Mist, weil man den global implementieren würde und nicht als Methode.

Anonymous

unregistriert

4

13.02.2004, 16:50

Vielen dank für die schnelle Antort :-)

mir ist jetzt noch nicht ganz klar was ihr mit member meint. ich verstehe es folgendermaßen:

public class affe
{
private:
int laenge;
int gewicht:
public:
int testfunktion() const;
}

void main()
{

affe a1;
a1.testfunktion();
}

würde die funktion jetzt bestimmte operationen machen(wie auch immer), aber NICHT den WERT oder die ADRESSE einer Elementvariable(in diesem fall gewicht und laenge) ändern???
ist das so richtig verstanden??

bitte antwortet mir eben

mfg der dude ;-)

5

13.02.2004, 17:05

Jub ganz genau. Wenn du es trotzdem machst, wird dir der Compiler ne Fehlermeldung an den Kopf werfen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

6

13.02.2004, 17:19

danke

Werbeanzeige