Methode constant machen
-
Hi,
Beispiel:
class test { public: void ausgabe() const; [...] }; void test::ausgabe() const { cout<<"ausgabe()" <<endl; }
Frage:
Welchen Vorteil hat man wenn solch eine Methode constant ist?
Hat das eine Auswirkung auf die Ausführgeschwindigkeit oder den Speicherverbrauch?Im Voraus vielen Dank
Gruß Eny
-
Nein, die Methode kann nur lesend auf Daten zugreifen.
-
Nein, es hat auf die erzeugte ausführbare Datei keine Auswirkungen, sondernt dient nur als "Schutz" gegen Veränderung des Objektes. (Also der Compiler schreit wenn du versucht in der Methode irgendetwas am Objekt zu verändern [es sei denn es handelt sich um ein mutable Element])
gruß,
walker
-
Hi,
wow ... hier wird ja schneller geantwortet, als ich lesen kann
Herzlichen Dank erstmal.
Ist es also so, daß das 'constant' machen eher für den Coder da ist, um bei späteren Änderungen/Erweiterungen Programmierfehler direkt bei der Compilierung sichtbar zu machen?
Frage:
Sollen Methoden die auf jeden Fall nur lesend zugreifen immer constant gemacht werden?
Gruß Eny
-
Eny schrieb:
Sollen Methoden die auf jeden Fall nur lesend zugreifen immer constant gemacht werden
Ja, dann kanst du dir sicher sein, das sie auch nur lesen können.
-
Hi,
ahhhja ... Danke ... wieder was gelernt habe
.
Gruß Eny
-
class foo { int i; public: foo(int c) : i(c) { } int get() { return i; } void set(int c) { i=c; } }; int bar(const foo &c) { return c.get(); //hier meldet der Compiler einen Fehler, da c const ist }
Alle Funktionen, die für den Benutzer die Klasse nicht ändern, solltest du konstant machen. Wenn du intern Variablen benutzt, die für den Nutzer aber nicht sichtbar/offensichtlich sind, kannst du die Variablen auch als mutable deklarieren und sie trotzdem in const-Methoden bearbeiten.