一.定义
namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
二.C与C++中的对比
C中的命名空间
在C语言中只有一个全局作用域
c语言中所有的全局标识符共享同一个作用域
标识符之间可能发生冲突
C++中
命名空间将全局作用域分成不同的部分
不同命名空间中的标识符可以同名而不会发生冲突
命名空间可以相互嵌套
全局作用域也叫默认命名空间
三.C++命名空间定义及使用语法
在C++中,明察名称(name)可以是符号常量,变量,宏,函数,结构,枚举,类和对象......为了避免,在大规模程序设计中,以及在程序使用各种各样的C++库时,这些标识符的命名发生冲突,C++引入了关键字namespace(命名空间/名字空间/名称空间/名域)可以更好的控制标识符的作用域。
原型 namespace name{....}
使用整个命名空间:using namespace name;
使用命名空间中的变量:using name::variable;
namespace NameSpaceA
{
int a = 0;
}
namespace NameSpaceB
{
int a = 1;
namespace NameSpaceC
{
struct Teacher
{
char name[10];
int age;
};
}
}
int main()
{
using namespace NameSpaceA;
using NameSpaceB::NameSpaceC::Teacher;
printf("a = %d\n", a);
printf("a = %d\n", NameSpaceB::a);
NameSpaceB::NameSpaceC::Teacher t2
Teacher t1 = {"aaa", 3};
printf("t1.name = %s\n", t1.name);
printf("t1.age = %d\n", t1.age);
system("pause");
return 0;
}