一、作用
命名空间的作用:对标识符的名称进行本地化 ,以避免名称冲突 或者名字污染 ,namespace关键字 就是解决这个问题。
二.定义
普通命名空间
namespace N1 //namespace是关键字,N1是命名空间
{
//在命名空间中,可以定义变量,也可以定义函数
int a;
int Add(int b, int c)
{
return (b + c);
}
}
命名空间嵌套命名空间
namespace N2
{
int a;
int b;
int Add(int a1, int b1)
{
return (a1 + b1);
}
namespace N3
{
int c;
int d;
int Sub(int c1, int d1)
{
return (c1 * d1);
}
}
}
在同一个工程中允许存在多个相同名称 的命名空间,编译器最后会将这些空间合成到同一个命名空间中
注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
三、使用
namespace N3
{
int c = 10;
int d = 20;
int Sub(int c1, int d1)
{
return (c1 * d1);
}
}
int main()
{
printf("%d", c);//error,在主函数未定义变量c
return 0;
}
1.加命名空间名称及作用域限定符
int main()
{
printf("%d", N3::c);//N3为命名空间,"::"为作用域限定符
return 0;
}
2.使用using将命名空间成员引入
using N3::d; //引入N3命名空间的变量d
int main()
{
printf("%d",N3::c);
printf("%d", d);//
return 0;
}
3.使用using namespace 命名空间名称 引入
using namespace N3;
int main()
{
//命名空间的变量可以修改
N3::c = 20;
N3::d = 30;
printf("%d",N3::c);
printf("%d",d);
int e = Sub(20, 30);
printf("d",e);
}