2017-01-06 22 views

Odpowiedz

14

::std::string oznacza string w przestrzeni nazw std w globalnej przestrzeni nazw. Wiodący :: wymusza wyszukiwanie w globalnym obszarze nazw. Dlatego ::std::string zawsze oznacza typ string ze standardowej biblioteki C++.

std::string oznacza string w przestrzeni nazw std, gdzie std będzie wyglądał w bieżącym zakresie. Dlatego też, jeśli istnieje klasa, przestrzeń nazw lub wyliczenie o nazwie std, wyszukiwanie nazwy może znaleźć std.

#include <string> 
namespace foo { 
    namespace std { 
    class string { ... }; 
    namespace bar { 
     std::string s; // means foo::std::string 
     ::std::string s; // means string from standard library 
    } 
    } 
} 

Nie jest konieczne stosowanie wiodącą :: tak długo jak ty i twoi współpracownicy nie zgadzają się wymienić niczego std. To po prostu dobry styl.

Powiązane problemy