(variable in Klassendeklaration) vs (static variable in der Klassenmethode)
-
Wenn NUR eine Methode bestimmte Variablen braucht, die solange existieren sollen wie das Objekt der Klasse selbst angelegt ist, kann ich
void object::zaehle() { static int var = 0; var++; cout << var; // zähl! }machen?
Wenn ich int var in der Klassendeklaration schreibe, müsste ich ständig zwischen *.h und *.cpp hin- und herspringen, um zu wissen was var wirklich ist.
Auch in der Deklaration könnte ich nicht wissen wofür var ist, wenn ich mir nicht vorher die Methoden angeschaut habe.Variablen in der Klassendeklaration machen nur Sinn wenn sie von mehreren Methoden benötigt werden, verstehe ich so alles richtig?
-
xBlackKnightx schrieb:
Wenn NUR eine Methode bestimmte Variablen braucht, die solange existieren sollen wie das Objekt der Klasse selbst angelegt ist, kann ich
void object::zaehle() { static int var = 0; var++; cout << var; // zähl! }machen?
Nein. Das bezieht sich dann auf alle Aufrufe von zaehle und ist nicht an das konkrete Objekt gebunden.
Wenn ich int var in der Klassendeklaration schreibe, müsste ich ständig zwischen *.h und *.cpp hin- und herspringen, um zu wissen was var wirklich ist.
Auch in der Deklaration könnte ich nicht wissen wofür var ist, wenn ich mir nicht vorher die Methoden angeschaut habe.Dann organisier dich besser.
Variablen in der Klassendeklaration machen nur Sinn wenn sie von mehreren Methoden benötigt werden, verstehe ich so alles richtig?
Nein.
-
xBlackKnightx schrieb:
Wenn ich int var in der Klassendeklaration schreibe, müsste ich ständig zwischen *.h und *.cpp hin- und herspringen, um zu wissen was var wirklich ist.
Auch in der Deklaration könnte ich nicht wissen wofür var ist, wenn ich mir nicht vorher die Methoden angeschaut habe.Warum solltest du da hin- und herspringen wollen? Gib der Vaiablen einen vernünftigen Namen, der aussagt wofür sie da ist, dann brauchst du auch nicht immer nachzuschauen.
-
Wenn mehrere Methoden verschiedene Variablen mit ähnlichen Namen brauchen, schmeisse ich damit in der Deklaration alles in einem Topf. Wenn das Objektorientiert sein soll...
-
xBlackKnightx schrieb:
Wenn mehrere Methoden verschiedene Variablen mit ähnlichen Namen brauchen, schmeisse ich damit in der Deklaration alles in einem Topf. Wenn das Objektorientiert sein soll...
_normalerweise_ sollten Methoden sich nicht irgendwelche Dinge von einem Aufruf zum nächsten merken müssen. Falls doch, gehört die entsprechende Variable meist zum Zustand des Objektes und wird von mehr als nur einer Methode benutzt. In Ausnahmefällen kann es mal Hilfsvariablen für einzelne Methoden in der Klasse geben, die dann aber auch einen entsprechenden Namen haben - der dann den Namen der Methode beinhalten sollte. Man kann Namen immer so ausführlich schreiben, dass ihr Zweck eindeutig ist. Wenn nötig halt 30 Zeiche lang, schließlich muss man den Namen nicht oft schreiben (da er ja eh nur in einer Methode benutzt wird), dafür aber häufiger lesen. Tippfaulheit ist also keine Ausrede.
Mehr als solche allgemeinen Aussagen kann man hier allerdings nicht treffen, da du uns weder deinen Code gezeigt hast, noch erklärt hast, was du eigentlich erreichen willst.
-
ich glaube dass ich verstanden habe.
Es war für mich ein bißchen merkwürdig, dass ich dachte es müsste anders gehen.