2011-05-11 11 views
9

Tenir compte de la ligne de code suivante::: sans espace de noms

::CGContextRef cgContext = cocoa::createCgBitmapContext(surface); 

Comment se fait il n'y a pas d'espace de noms spécifié avant ::? Est-ce que cela signifie qu'il utilise le même espace de noms que la classe dans laquelle vous vous trouvez?

Répondre

7

Le :: fait référence à l'espace de noms global.

3

:: sans aucun espace de nom avant cela signifie qu'il se réfère espace de noms global.

::CGContextRef cgContext = cocoa::createCgBitmapContext(surface); 

signifie se référer à CGContextRef dans le espace de noms global.

8

:: dans ::CGContextRef signifie espace de noms global, ce qui signifie que CGContextRef est défini dans l'espace de noms global.

int x = 10; 
namespace test 
{ 
    int x = 100; 
    void f() 
    { 
     std::cout << x << std::endl; //prints 100 
     std::cout << ::x << std::endl; //prints 10 
    }  
} 

Voir la démo complète ici: http://www.ideone.com/LM8uo