目录
命名空间的定义
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
namespace bit
{
// 命名空间中可以定义变量/函数/类型
int rand = 10;
int Add(int left, int right)
{
return left + right;
}
struct Node
{
struct Node* next;
int val;
};
}
ps:1.命名空间可以嵌套
2.一个工程里可以存在相同名称的命名空间,最后会被合并成一个
命名空间的使用
以下有三种方式可以调用上面命名空间的成员
1.加命名空间名称及作用域限定符
int main()
{
printf("%d\n", bit::rand);
return 0;
}
输出结果为10 此处bit::就意味着在bit这个命名空间里去找,和指针类似
2.使用using将命名空间中某个成员引入
using bit::rand;
int main()
{
printf("%d\n", rand);
return 0;
}
输出结果为10 此处和函数声明类似
3.使用using namespace 命名空间名称 引入
using namespce bit;
//展开命名空间
int main()
{
printf("%d\n", b);
return 0;
}
输出结果为10 bit里只有一个b 调用后输出
注意:在main函数里使用成员时,编译器会先在以下三个地方进行顺序查找
1.当前局部域查找
2.全局域查找
3.到展开的命名空间域中查找
如果命名空间里的成员名相同,就不能全部展开命名空间域,只能指定展开