namespace名字空间
namespace 汉语意思就是名字空间,下面这行代码中是我们最常见出现过namespace的地方,可是,它这个关键字使用来干什么的呢?下面请听我细细道来:
using namespace std;
using和namespace是C++63个关键字中的两个,using是声明,引入命名空间或基类作用域内已经被声明的名称。而namespace就是一个名字空间,显然,这行代码的意思就是:引入一个名为std的名字空间。C++标准程序库中的所有标识符都被定义于std的namespace中。
namespace N0
{
namespace N1
{
int add(int a, int b)
{
cout<<"N1"<<endl;
return a + b;
}
}
namespace N2
{
int add(int a, int b)
{
cout<<"N2"<<endl;
return a + b;
}
}
}
int main()
{
cout<<N0:: N1::add(1,3)<<endl;//调用时必须说明名字空间
cout<<N0:: N2::add(1,3)<<endl;//调用时必须说明名字空间
return 0;
}
由此可见,我们也可以自己定义一个名字空间,但要遵循以下规则:
规则1:名字空间可以解决函数重复、全局变量名重复的问题。 包在不同名字空间里的重复函数实际上是两个完全的不同的函数。
规则2:名字空间允许嵌套,嵌套内部和外部没有任何关系。
规则3:名字空间允许重名,重名的名字空间最后会合并为一个。
名字空间划分新的作用域,解决了C语言中只能用文件划分作用域的缺陷。