bedeutung von const
-
hallo,
funktionen die keinen wert ändern, sondern nur zur darstellung oder rückgabe eines da sind, soll man "const" anhängen.
double GetWert() const { return m_dWert; }
jetzt frag ich mal dumm: wozu?
macht das irgendwie das programm schneller? compiliert er besser? solls nur schöner aussehen?Es gibt Situationen, in dennen eine Funktion einer Klasse keine Eigenschaften verändern muss, zum Beispiel weil sie nur den Wert einer Eigenschaft zurückgibt. Solche Funktionen bezeichnen wir als Konstant. Dies machen wir die Compiler klar, indem wir nach die Namen und den Funktionsklammern das Schlüsselwort const plazieren
schöner text zum lesen! nur warum man das nun machen soll hängt in der luft ,da es total überflüssig ist .....
-
zu deiner eigenen sicherheit.
-
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".