float foo() const { return m_fValue };
-
float foo() const { return m_fValue };Hallo,
habe gerade obige Konstruktion(Funktionsdefinition) innerhalb einer fremden Klasse entdeckt. Wozu ist das const dort gut, sehe ich zum ersten mal.Und noch eine Frage am Rande: Wann muss ich eine Funktion eigentlich mit Semikolon abschließen und wann nicht, zum Beispiel wird mein Programm kompiliert, egal ob ich die WinMain mit ("};") oder ohne Semikolon nach ("}") abschließe.
Btw: Forensuche hat sich totgeladen, die Suche mit google war ach nicht der Bringer.
-
Sry, nach dem "return m_fValue" muss natürlich noch ein Semikolon sein.
-
Das "const" bedeutet, dass die Memberfunktion keine werte der klasse ändert.
damit kann man die Funktion auch von konstanten objekten aufrufen.const Foo foo(); foo.constfunc(); // geht nur wenn constfunc konstant isteine funktionsdefinition braucht kein semikolon, ein fehler ist es aber nicht:
void func() { }eine funktionsdeklaration hingegen schon:
void func();
-
Besten Dank!
-
das const sagt einfach dass mit dieser methode nicht in der aktuellen instanz geändert wird
sprich im *this wird keine membervariable verändert
auch funktion die solche verändern können nicht aufgerufen werden
-
Ein Semikolon nach geschlossenen geschweiften Klammern brauchst du nur bei der Definition von Klassentypen, Enumerationen und der Aggregat-Initialisierung bei PODs und Arrays.
class MyClass { }; struct MyStruct { }; union MyUnion { }; enum MyEnum { Enumerator1, Enumerator2, }; float Array[] = {2, 3}; MyStruct Obj = {};Funktionen und lokale Blöcke (z.B. von If-Abfragen, Schleifen oder einfach so) benötigen hingegen kein Semikolon. Als Leeranweisung ist es zwar erlaubt, jedoch überflüssig.
int main() { { int a; } if (Condition) { for (int i = 0; i < 35; ++i) { } } }