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.