0、序言
  名字空间是C++提供的一种解决符号名字冲突的方法。
  一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体。
  通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互影响。
  1、名字空间的成员
  定义在名字空间中的实体称为名字空间的成员。
  名字空间内的名字可以被该名字空间内的其他成员直接访问,名字空间外的代码必须指定该名字位于哪个名字空间。
  一个名字空间可以包含多种类型的标识符,如下面所列:
  变量、常量、函数、结构体/联合体/枚举、类、嵌套名字空间
  名字空间成员的引用方法如下:
  namespace_name::member_name
  2、定义名字空间
  (1)、一个名字空间可以在两个地方被定义:在全局范围层次或者是在另一个名字空间中被定义(这样形成一个嵌套名字空间),不能在函数和类的内部定义。
  (2)、名字空间可以是不连续的,他是由所有分离定义的部分的总体构成的。一个名字空间可以分散多个文件中,不同的文件中名字空间的定义也是累积的。
  通常将名字空间的声明放到头文件中,实现放到源文件中。可以将不相关的成员放到不同的头文件中。
  (3)、命令空间的作用域不能以分号结尾。
  3、嵌套名字空间(Nested Namespce)
  3.1、普通嵌套名字空间(ordinary nested namespace)
  一个嵌套名字空间是一个嵌套作用域,其作用域嵌套在包含他的名字空间中。
  在外部引用嵌套空间中的成员时,使用下面的形式
  包含嵌套空间的名字空间的名字::嵌套空间的名字::嵌套空间的成员
  下面举例说明嵌套名字空间定义和使用
#include <iostream>
namespace MyOutNames
{
int iVal1 = 100;
int iVal2 = 200;
namespace MyInnerNames //定义嵌套名字空间
{
int iVal3 = 300;
int iVal4 = 400;
}
}
int main(void)
{
std::cout<<MyOutNames::iVal1<<std::endl;
std::cout<<MyOutNames::iVal2<<std::endl;
std::cout<<MyOutNames::MyInnerNames::iVal3<<std::endl;  //使用嵌套名字空间成员
std::cout<<MyOutNames::MyInnerNames::iVal4<<std::endl;  //使用嵌套名字空间成员
return 0;
}