std::cout << "namaspace test" << std::endl;//如果不寫(xiě)需要顯式的寫(xiě)出類(lèi)的關(guān)系
return 0;}//定義命名空間namespace NameSpaceA{int a = 10;//定義了一個(gè)命名空間,有一個(gè)變量a,賦值為10}namespace NameSpaceB{int a = 20;//定義了一個(gè)不同的命名空間,也有一個(gè)變量a,賦值為20}//因?yàn)閮蓚€(gè)命名空間不一樣所以就算空間中定義的標(biāo)識(shí)符一樣也沒(méi)有關(guān)系namespace NameSpaceC{namespace NameSpaceD{ class Teacher{public:int age;string name;//因?yàn)橛玫搅藄tring所以要加頭文件}; }//命名空間可以嵌套,不光可以定義變量,也可以定義類(lèi)和結(jié)構(gòu)體}void main(){using namespace NameSpaceA;//使用NameSpaceA //輸出的a 為10 //同理使用NameSpaceB 輸出的a 為20using namespace NameSpaceB;//但是同時(shí)都使用時(shí)a就回報(bào)錯(cuò),因?yàn)椴恢朗茿的a還是B的a,所以有必要時(shí)還需要用顯式cout << NameSpaceB::a << endl;//隱式using namespace NameSpaceC::NameSpaceD;//注意因?yàn)镈是嵌套在C里面的所以直接using D是出不來(lái)的Teacher t1;//因?yàn)閠eacher是D里面定義好的類(lèi)所以可以直接創(chuàng)建對(duì)象t1.name = "張三";cout << t1.name << endl;//顯式NameSpaceC::NameSpaceD::Teacher t2;//顯式使用命名空間創(chuàng)建對(duì)象t2.name = "李四";cout << t2.name << endl;}
//總結(jié):
(1)當(dāng)使用<iostream>的時(shí)候,改頭文件沒(méi)有定義全局的命名空間,必須使用namespace std 這樣才能使用cout。若不引入using namespace std, 需要std::cout。
(2)C++標(biāo)準(zhǔn)為了和C區(qū)別開(kāi),也為了正確使用命名空間,規(guī)定頭文件不使用后綴 .h 。(因?yàn)閕ostream.h是老版本,速度慢)
(3)C++命名空間的定義:namespace name{.....}
(4)using namespace NameSpaceA(命名空間的使用)
(5)namespace 定義可以嵌套
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注