Frage zu static Memberfunktionen



  • Hallo, ich habe gerade in meinem C++ Buch von statischen Memberfunktionen von Klassen erfahren.
    Den Sinn von statischen Membervariablen verstehe ich ja (Wert einer Variablen unabhängig von Objekten speichern).
    Allerdings sehe ich den Unterschied zwischen normalen und statischen Memberfunktionen nicht. Wann brauche ich statische Memberfunktionen? Gibt es Vorteile gegenüber nicht statischen?

    class test
    {
       public:
        T NichtStatisch(){...} 
        static T Statisch(){...} //Sinn?
    };
    


  • Selber Vorteil wie bei statischen Variablen: benutzbar ohne Instanz.
    Man kann so z.B. setter und getter für statische Variablen implementieren.
    Oder Funktionen, die eindeutig der Klasse zugeordnet werden können, aber keine Instanz benötigen (weil auf keine Instanzvariablen zugegriffen werden muss). Z.B. irgend welche Factory-Funktionen.
    USW.

    Aber jetzt nicht alles was im Entferntesten deiner Klasse zugeordnet werden kann als statische Memberfunktion deklarieren. Es gibt immer noch freie Funktionen. Die sind in C++ nicht böse, nur weil sie nicht in einer Klasse stehen...



  • schnucki_schnorr schrieb:

    Aber jetzt nicht alles was im Entferntesten deiner Klasse zugeordnet werden kann als statische Memberfunktion deklarieren. Es gibt immer noch freie Funktionen. Die sind in C++ nicht böse, nur weil sie nicht in einer Klasse stehen...

    In einem gewissen Sinne sind statische Memberfunktionen ja freie Funktionen. Einfach mit einer engeren Anbindung an die Klasse. Noch näher kommt die Analogie mit einer freien Funktion in einem namespace. Das merkt man auch an der gleichen Syntax.



  • drakon schrieb:

    Analorgie mit einer freien Funktion

    lol



  • ihhhhhhh schrieb:

    drakon schrieb:

    Analorgie mit einer freien Funktion

    lol

    Das ist falsch gequotet.


Anmelden zum Antworten