1.命名空间的定义
c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h,在C++采用命名空间可以将变量,函数,类很好的组织起来,避免冲突,命名空间实际上定义了一个范围。
namespace user
{
int a(10);
}
2.命名空间的使用
::域作用符
using namespace user;其作用域为该行代码的开始到代码结束。如果在块语句内部其作用域为定义开始到块语句结束。
例:
void test()
{
using namespace user;
}
对user命名空间中的a进行赋值的时候要采用user::a=15;进行操作;
当命名空间的名称长度较长的时候可以用 namespace r=user;进行重命名。
3.命名空间的嵌套
在命名中间中可以进行命名空间的嵌套,即相同名称的命名空间是可以被多次声明的,例:
namespace user
{
int a(10);
namespace tianya
{
int b(20);
}
}
此时对命名空间tianya的访问采用 user::tianya::b;
如果此时采用 using namespace user::tianya进行访问则只有tianya是可见的。
4.命名空间的拓展
在一处写的命名空间可以在另一处进行扩展,例如可以对上面的user命名空间增加定义
namespace user
{
char *name("helloworld");
}
5.命名空间注意事项
1、在命名空间中一般不直接写函数,当需要函数的时候采用函数指针的形式,这样的好处是易于更改
例:
namespace user{
int (*p)(int,int)=add;
}
int add(int a,int b)
{
return a+b;
}
2、命名空间是透明的,所有的都是公有的,不能有private,类默认是私有的,结构体默认是公有的。