bedeutung von const
-
const-Elementfunktionen kannst du auch für konstante Objekte aufrufen.
-
ohne das würde sowas nicht gehen:
const Foo f; double d = f.GetWert();
-
Außerdem schaut der Compiler auch mit, dass du in const-Methoden wirklich nichts änderst (außer mutable-Elemente).
Das heisst, du kannst dir absolut sicher sein, dass die Methode wirklich nichts ändert.
-
Naja, sobald man die leider sehr flexiblen Zeiger einsetzt, ist es aber vorbei mit der automatischen Überprüfung der logischen const-ness, da in einer const-Elementfunktion nur die Unterelemente des Objekts (sprich der Zeiger) const sind, nicht aber die angezeigerten Objekte. Besser als nichts ist const trotzdem
-
Dann muss man den Zeiger halt so definieren: const int* const pointer, hehe.
Jojo, const rult
Ne, hast natürlich schon recht. *troll*
(omg ich glaub, ich vertrag keinen Kaffee)
-
operator void: Kann ich nicht ganz nachvollziehen. Beispiel?
-
ich dachte, als ich sein posting gelesen habe, an sowas:
class foo { int *x; public: foo () : x(new int(42)) {} ~foo () { delete x; } int value () const { return *x; } void change_to (int y) const { *x = y; } }; int main() { const foo f; cout << f.value() << endl; f.change_to(23); cout << f.value() << endl; }
worauf willst du hinaus? change_to besser nicht const machen?
-
IMO sollte man Methoden nicht const machen, wenn sie irgendwas (auch indirekt) am Objekt verändern. Außer, es ist mutable, dafür ist es ja da.
Meine Meinung...
-
*geräuscheinesfallendengroschens*
-
Äh ja. Ich habe mich vorhin ja wieder wahnsinnig konkret und ausführlich geäußert
...
davies Beispiel passt schon ganz gut. Wenn man das pimpl-Idiom einsetzt, hat man dasselbe "Problem".