1、命名空间(namespace)
使用命名空间的目的是为了避免命名冲突,在C++中,变量、函数和类都是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突。比如,如果我们在自己的程序中定义了一个函数toupper(),这将重写标准库中的toupper()函 数,这是因为这两个函数都是位于全局命名空间中的。命名冲突还会发生在一个程序中使用两个或者更多的第三方库的情况中。此时,很有可能,其中一个库中的名 称和另外一个库中的名称是相同的,这样就冲突了。这种情况会经常发生在类的名称上。比如,我们在自己的程序中定义了一个Stack类,而我们程序中使用的某个库中也可能定义了一个同名的类,此时名称就冲突了。
namespace关键字通过创建作用范围来对全局命名空间进行分隔,定义命名空间的基本形式如下:
namespace 名称{//声明}
在命名空间中定义的任何东西都局限于该命名空间内,
在命名空间中声明的标识符是可以直接被该命名空间中的函数引用的,而不需要加对应的命名空间修饰符。
相同的命名空间名称是可以被多次声明的,从而使得命名空间可以被分割到几个文件中甚至是同一个文件的不同地方。例如:
namespace NS
{
int i;
}
namespace NS
{
int j;
}
其中命名空间NS被分割成两部分,但是两部分的内容却是位于同一命名空间NS中的。
命名空间是可以嵌套的:也就是说可以在一个命名空间内部声明另外的命名空间。