std::cout << "namaspace test" << std::endl;//如果不寫需要顯式的寫出類的關系
return 0;}//定義命名空間namespace NameSpaceA{int a = 10;//定義了一個命名空間,有一個變量a,賦值為10}namespace NameSpaceB{int a = 20;//定義了一個不同的命名空間,也有一個變量a,賦值為20}//因為兩個命名空間不一樣所以就算空間中定義的標識符一樣也沒有關系namespace NameSpaceC{namespace NameSpaceD{ class Teacher{public:int age;string name;//因為用到了string所以要加頭文件}; }//命名空間可以嵌套,不光可以定義變量,也可以定義類和結構體}void main(){using namespace NameSpaceA;//使用NameSpaceA //輸出的a 為10 //同理使用NameSpaceB 輸出的a 為20using namespace NameSpaceB;//但是同時都使用時a就回報錯,因為不知道是A的a還是B的a,所以有必要時還需要用顯式cout << NameSpaceB::a << endl;//隱式using namespace NameSpaceC::NameSpaceD;//注意因為D是嵌套在C里面的所以直接using D是出不來的Teacher t1;//因為teacher是D里面定義好的類所以可以直接創建對象t1.name = "張三";cout << t1.name << endl;//顯式NameSpaceC::NameSpaceD::Teacher t2;//顯式使用命名空間創建對象t2.name = "李四";cout << t2.name << endl;}
//總結:
(1)當使用<iostream>的時候,改頭文件沒有定義全局的命名空間,必須使用namespace std 這樣才能使用cout。若不引入using namespace std, 需要std::cout。
(2)C++標準為了和C區別開,也為了正確使用命名空間,規定頭文件不使用后綴 .h 。(因為iostream.h是老版本,速度慢)
(3)C++命名空間的定義:namespace name{.....}
(4)using namespace NameSpaceA(命名空間的使用)
(5)namespace 定義可以嵌套
新聞熱點
疑難解答