使用命名空间的目的
在C/C++中,变量,函数,类都是大量存在的,这些变量,函数和类的名称都存在于全局作用域中,可能会导致很多冲突,使用命名空间是对标志符的本地化,以避免命名冲突和命名污染
namespace关键字
- 定义一个名为N1的命名空间
namespace N1 {
int a; // 定义变量
//定义函数
int Add(int x, int y){
return x + y;
}
}
- 命名空间的嵌套
namespace N1 {
int a;
namespace N2 {
int a;
int Sub(int x, int y){
return x - y;
}
}
namespace N3{
int a;
int b;
int c;
int Mul(int x, int y) {
return x * y;
}
}
}
- 如果存在福多个同名的命名空间,编译器会将同名的命名空间合并成一个
命名空间的使用
- 命名空间名称 + 作用域限制符(::)
printf("%d", N1::a);
- using + 命名空间名称 + 作用域限制符
using N2::a;
//main函数中所有没有限制作用域的a都是命名空间N2中的a
int main(){
printf("%d", a);
}
- using namespace+ 命名空间名称
using namespace N3;
int main(){
a = 1; //N3中的a
b = 2; //N3中的b
c = Mul(a, b); //N3中的Mul函数
}