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.htm

    dann 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 Neumann 😋

    Statische 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 fehlt 🙂

    mfg
    v R


Anmelden zum Antworten