一、命名空间的基本理解
命名空间的使用就是为了起到代码端拥有自己的作用域,有了不同的命名空间就有了不同的作用域,也就可以定义相同的变量,
避免了变量重复定义使用的语法错误。实例代码如下所示:
–
#include <iostream>
namespace A
{
int a;
int b;
}
namespace B
{
int a;
int b;
}
int main()
{
A::a = 10;
B::a = 11;
A::b = 12;
B::b = 13;
std::cout<< "A::a = "<< A::a<<std::endl;
std::cout<< "A::b = "<< A::b<<std::endl;
std::cout<< "B::a = "<< B::a<<std::endl;
std::cout<< "B::b = "<< B::b<<std::endl;
return 0;
}
运行结果:
A::a = 10
A::b = 12
B::a = 11
B::b = 13
二、引入命名空间
① 引入命名空间在所有变量
如果引入了某个命名空间,那么使用它的变量就不需要再写命名空间::变量了,
直接写其变量即可。如下图所示:
② 引入命名空间中指定的变量
但我们只需要使用某个命名空间中的几个变量,那么不需要把整个命名空间引进来,避免变多污染命名空间的环境。指定变量引入如下图所示
③ 当两个空间中有相同的变量名时,需要注意
当引入的不同命名空间中,有相同的变量时,不能直接写变量名字对其使用,
会报二义性,需要空间名字::变量名的方式使用变量,如下图所示:
三、全局作用域
① 全局作用域的名字空间是匿名的,直接用::引用即可
② 命名空间的本质就是作用域,小作用域覆盖大作用域。同一等级的作用域不能冲突!