static <-> const in Klassen



  • Mir ist noch nicht so klar was von beiden ich in welchem Zusammenhang wie nutzen soll.
    Wenn ich Konstanten in einer Klasse brauche benutze ich static, sollte ich dann dazu auch noch const benutzen?

    Also:

    class Test {
    
      private:
        static const int number;
    };
    

    oder:

    class Test {
    
      private:
        static int number;
    };
    


  • Du benutzt const , wenn der Wert nicht verändert werden soll.

    Du benutzt static , wenn alle Instanzen auf dieselbe Variable zugreifen sollen.

    Wenn also eine Membervariable const ist, dann kann sie auch [static] sein. Andersrum gilt das aber nicht.



  • Konstanten -> const

    Allerdings würde ich die Konstante eher in einem anonymen Namensraum in der .cpp-Datei deklarieren. So hast du keine unnötige Abhängigkeit im Header und musst bei einer Änderung der Deklaration nicht alle Clients des Headers rekompilieren.



  • Also wenn ich in einer Klasse viele Konstanten benötige diese eher außerhalb der Klasse deklarieren?

    const int number = 0;
    
    class Test {
    
    };
    


  • MyClass.hpp

    // Header Guard
    #ifndef MYCLASS_HPP
    #define MYCLASS_HPP
    
    // Klassendefinition
    class MyClass
    {
        public:
            // Methodendeklaration
            void Function();
    };
    
    #endif
    

    MyClass.cpp

    #include "MyClass.hpp"
    
    // Anonymer Namensraum mit Konstantendefinition
    namespace
    {
        const int number = 74;
    }
    
    // Methodendefinition
    void MyClass::Function()
    {
        ...   
    }
    

Anmelden zum Antworten