為什么要有命名空間的出現(xiàn)
在C++中,名稱(name)可以是符號(hào)常量近尚、變量蠕啄、宏、函數(shù)戈锻、結(jié)構(gòu)歼跟、枚舉、類和對(duì)象等等格遭。為了避免哈街,在大規(guī)模程序的設(shè)計(jì)中,以及在程序員使用各種各樣的C++庫(kù)時(shí)拒迅,這些標(biāo)識(shí)符的命名發(fā)生沖突骚秦,標(biāo)準(zhǔn)C++引入了關(guān)鍵字namespace(命名空間/名字空間/名稱空間/名域),可以更好地控制標(biāo)識(shí)符的作用域
C++作用域級(jí)別
代碼塊坪它、復(fù)合語(yǔ)句骤竹、函數(shù)體
類
命名空間
全局
注意
命名空間可以是全局的帝牡,也可以位于另一個(gè)命名空間之中往毡,但是不能位于類和代碼塊中
而using指令是改變了標(biāo)識(shí)符的作用域可見(jiàn)性
```
#include
void test1()
{
{
// 代碼塊級(jí)作用域
? ? ? ? using namespace std;
cout <<"debug1" << endl;
}
//? ? cout << "debug2" << endl;
}
void ff()
{
//? ? cout << "debug20" << endl;
}
void test2()
{
// 函數(shù)級(jí)別
? ? using namespace std;
cout <<"debug10" << endl;
ff();
}
namespace data1 {
int num =10;
}
namespace data2 {
int num =20;
namespace data3 {
int num =30;
}
}
void test3()
{
int num =50;
using namespace std;
using namespace data1;
using namespace data2;
cout << num << endl;
}
int main()
{
test1();
test2();
test3();
}
```