大型程序往往会使用多个独立开发的库,这些库又会定义大量的全局名字,如类、函数和模板等。当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突的情况。多个库将名字放置在全局命名空间中将引发 命名空间污染(namespace pollution)。
命名空间( namespace)为防止名字冲突提供了更加可控的机制。命名空间分割了全局命名空间,其中每个命名空间是一个作用域。通过在某个命名空间中定义库的名字,库.的作者(以及用户)可以避免全局名字固有的限制。
命名空间定义
namespace myTest{
class Sales_data{};
class Query{};
class Query_base{};
}
使用命名空间
//1
myTest::Query q("Hello");
//2
using namespace myTest;
Query q("HEllow");
//3
namespace m = mtTest;
m::Query q("Hello");
命名空间可以是不连续的
namespace nsp{
//相关声明
}
可能是定义了一个名为nsp的新命名空间,也可能是为已经存在的命名空间添加了一些新成员。