本文参考自狄泰软件学院:《C++深度剖析》
命名空间是什么?为什么需要命名空间?
C语言的命名空间
- C语言中所有的全局标识符共享同一个作用域
- 标识符之间可能发生冲突
在实际工程项目开发中,并不是又一个人编写全部代码的,而是分多人合作写同一个项目。但是由于C语言的这种特性,不同的人可能定义同名的全局变量,导致全局变量发生冲突。所以一般用C编写代码,尽量少用全局变量。
为了解决C语言这个问题,C++中提出了命名空间的概念。
C++中的命名空间
- 命名空间将全局作用域分为不同的部分
- 不同命名空间中的标识符可以同名而不会发生冲突
- 命名空间可以相互嵌套
- 全局作用域也叫默认命名空间
示例代码:命名空间的使用
namespace First
{
int i = 0;
}
namespace Second
{
int i = 1;
namespace Internal
{
struct N
{
int x;
int y;
};
}
}
int main()
{
using namespace First;
using Second::Internal::N;
printf("First::i = %d\n", i); //0
printf("Second::i = %d\n", Second::i); //1
N p = {2, 3};
printf("p.x = %d\n", p.x); //2
printf("p.y = %d\n", p.y); //3
return 0;
}