was ist global namespace



  • wenn ich schreibe

    std::cout<<...
    

    dann weiss ich cout ist definiert in namespace std

    aber manchmal sehe ich

    ::funcname
    

    laut definietion "::" bedeutet global namespace, aber wo ist eigentlich glabal namespace, wo ist das packet?



  • vielleicht bedeutet es, diese function ist ausserhalb von einem namespace definiert?



  • netrobot schrieb:

    laut definietion "::" bedeutet global namespace, aber wo ist eigentlich glabal namespace, wo ist das packet?

    Das ist kein Paket, sondern ein Namensraum, eben der globale:

    int globale_variable;
    int test // auch global
    
    int main() {
      int test; // lokale Variable test
      test = 5; // lokal
      ::test = 5; // global
    }
    


  • verstanden, das heisst auch wenn es ist eine function, dann ist diese function nicht in einem namespace drin, richtig?



  • int Test = 0; // Wenn nicht weiter angegeben ist, dann befindet man sich im
              // „globalen“ Namespace.
    
    namespace A
    {
    
    int Test = 1; // A::Test;
    
    void Func()
    {
        int b = Test;   // b = 1;
        int c = ::Test; // c = 0;
        int d = A::Test;// d = 1;
    }
    
    namespace B
    {
    
    int Test = 3; // A::Test;
    
    void Func()
    {
        int b = Test;   // b = 3;
        int c = ::Test; // c = 0;
        int d = A::Test;// d = 1;
    }
    
    } // Ende B
    } // Ende A
    
    int Func( )
    {
        int w = Test; // w = 0; Die andren Tests sind versteckt.
        int h = A::B::Test; // h = 3;
    }
    

    Weiterhin existieren 3 Func() Methoden:
    Globale - Func(),
    A::Func(),
    und A::B::Func().



  • netrobot schrieb:

    verstanden, das heisst auch wenn es ist eine function, dann ist diese function nicht in einem namespace drin, richtig?

    Könnte man so sagen.
    Da es aber umständlich ist es so zu bezeichnen sagt man: die Funktion ist im "global namespace" drin.

    Der "global namespace" ist sozusagen der (namenlose) Root-Knoten der Namespace-Hierarchie.


Anmelden zum Antworten