Funktionen mit "const" deklaration?
-
Seh ich das richtig das funktionen welche mit "const" gekennzeichent sind
void funkt() const { .... };
keine daten welche sie verarbeiten verändern drüfen??
-
'const' steht für "konstant" - also nicht veränderbar. Jetzt kommt es nur auf die Position an, welche Daten das betrifft:
const/*1*/ T1& func(const/*2*/ T2& value) const/*3*/;- der Aufrufer darf das zurückgegebene Objekt nicht verändern
- die Methode darf den übergebenen Paramter nicht ändern
- die Methode darf die Elemente von *this nicht ändern
(dabei gehört zu 'ändern' auch die Verwendung von nicht-konstanten Methoden - selbst wenn du weißt, daß diese keine Auswirkung haben)
-
ohh.. danke kurz und knackig;)
-
Hallo
Man kann aber auch
mutableverwenden und solche Variablen bzw. Funktionen in const-Funktionen verändern.
chrische
-
mach mal ein beispiel mit
mutable
-
"mutable" besagt einfach, daß das Element auch dann verändert werden darf, wenn sein Vater eigentlich const ist, z.B.:
class Test { int x; mutable int y; public: void teste() const { x=4711;//Fehler - *this (und damit auch this->x ist konstant y=4711;//funktioniert } }
-
Hallo
Das macht immer dann Sinn, wenn man zum Beispiel Kontrollvariblen hat und diese innerhalb einer eigentlich konstanten Funktion ändern will. Scott Meyers schreibt dazu einen schönes Kapitel in seinem Buch "Effektiv C++ programmieren"
chrische
-