PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : const in c++



SeeksTheMoon
22-02-2002, 12:24
Moin!

Wer kann mir die Bedeutung von "const" in C++ erklären.
Mein C++ Lehrer fährt da voll drauf ab, aber irgendwie hab ich den Sinn noch nicht ganz geschnallt.

Wann soll ich const einsetzen und was genau bewirkt es?

jgbauman
22-02-2002, 14:52
naja const ist ein Versprechen an den Compiler den betreffenden Wert nicht zu aendern (Versprechen, weil durch irgenwelche casts const immer wegzukriegen ist).

Wenn ihr C++ in der Schule habt, dann werdet ihr auch ein bisschen Theorie zu OO gelernt haben. Zu einem vernünftigen OO-Design gehöhren genaue Überlegungen zu den Zuständigkeiten von Klassen. Mit Hilfe von const lassen sich die Zuständigkeiten feingranularer regeln, z.B. nur Lesezugriff.

Ausserdem hilft des dem Compiler beim Optimieren, wenn sich etwas nicht verändert lassen sich manche Dinge besser zusammenfassen.

Insgesamt ist es gute Programmierpraxis, soviel wie möglich (sinnvoll) mit const zu deklarieren, auch (besonders.) Klassenmethoden

anda_skoa
26-02-2002, 16:22
const löst außerdem das Problem der C Makros für feste Werte.
(Kann nicht vesehentlich neudefinert werden; jedes Vorkommen hat einen symbolischen Namen und nicht nur den Wert, gut beim Debuggen)

Wenn die Konstante Member einer Klasse ist, dann ist sie kann eine andere in einer anderen Klasse auch gleich heißen.

Außerdem kann man damit effektic Objects an Funktionen übergeben:


void foo(MyClass& param1);
void bar(MyClass param1);
void foobar(const MyClass& param1);


foo erhält eine Referenz, was zwar effektif ist, aber foo kann den Inhalt von param1 ändern.
Bei bar muß der Compiler eine Kopie des Parameterobjects erzeuigen, was zwar das ungewollte ändern verhindert, aber zusätzlichen Speicher, Laufzeit und einen Copyconstructor benötigt.

Bei foobar bekommt man zwar die Referenz auf das echte Object, aber der Compiler erlaubt nicht, das es geändet wird.

Ciao,
_