statische Klasseneigenschaften und Klassenfunktionen
-
Hallo
Kann mir einer deutlich erklären was statische Klasseneigenschaften und statische Klassenfunktionen sind, denn ich habe im Buch gelesen aber nicht so viel verstanden... vielleicht kann einer von euc besser rüberbringen als das was ich geesen habe...
danke im voraus und verbleibe
mit freundlichen Grüßen
Frank Neumann
-
erstmal lies: http://tutorial.schornboeck.net/this.htm
und dann: http://tutorial.schornboeck.net/staticmember.htmdann sollte es klar sein. wenn nicht - dann frag nochmal.
-
Frank Neumann schrieb:
Hallo
Kann mir einer deutlich erklären was statische Klasseneigenschaften und statische Klassenfunktionen sind, denn ich habe im Buch gelesen aber nicht so viel verstanden... vielleicht kann einer von euc besser rüberbringen als das was ich geesen habe...
danke im voraus und verbleibe
mit freundlichen Grüßen
Frank NeumannStatische Membervariablen behalten ihre Werte und du kannst mit ihnen arbeiten
unabhaengig davon, ob du eine Instanz dieser Klasse hast oder nicht. Statische
Membervariablen koennen _nur_ von statischen Memberfunktionen veraendert werden
(nicht aber von nicht statischen Memberfunktionen).z. B.:
class Test { private: static int Count; public: static void IncCount() { ++Count; } static void DecCount() { --Count; } } int Test::Count = 0; //irgendwo im Quelltext //Test::Count incrementieren Test::IncCount(); //Test::Count decrementieren Test::DecCount();
Die Variable bleibt mit einer Speichereinheit verbunden, egal ob es von
'Test' eine Instanz gibt oder nicht.Statische Memberfunktionen koennen, ebenfalls unabhaengig davon ob es eine
Instanz von der Klasse gibt, aufgerufen werden.Class::Function(<params>);
mfg
v R
-
virtuell Realisticer schrieb:
[...]
Statische Membervariablen koennen _nur_ von statischen Memberfunktionen veraendert werden (nicht aber von nicht statischen Memberfunktionen).
[...]Wäre mir neu...
class Test { private: static int Count; public: void IncCount() { ++Count; } void DecCount() { --Count; } }; int Test::Count = 0; int main(int argc, char* argv[]) { Test test; test.IncCount(); return 0; }
Funktioniert wunderbar.
-
Ja, es sollte auch eigentlich heissen, dass statische Memberfunktionen keine
nicht statischen Membervariablen veraendern koennen, da ihnen der Bezug zum
Objekt fehltmfg
v R