在多个程序员合作一个大型的C++程序时,一个程序员起的某个全局变量名、类名,有可能和其他程序员起的名字重名。编写大型程序可能使用多个其他公司开发的类库或函数库,如果这些类库和函数库设计的时候都不考虑重名问题,那么同时使用两个不同的类库或函数库产品时,就会碰到无法解决的重名错误。重名主要有一下情况:

  • 全局变量名重名
  • 全局函数重名,而且参数表还相同
  • 自定义类型名重名,包括结构名、联合名、枚举名、typedef的类型名以及类名的重名
  • 模板名重名 用C++编程应该避免使用全局变量。全局变量都可以用类的静态成员变量代替,这样做就不存在全局变量重名的问题了。

要解决后面3种重名的情况,可以用 namespace的机制。C++程序中的每个名字都是属于一个命名空间的。如果定义该名字的时候没有定他属于哪个命名空间,那么他就属于 全局命名空间。注意:整个程序只有一个全局命名空间,而不是每个cpp文件都有各自的命名空间。

1
2
3
4
namespace 名字空间
{
	程序片段
}

上述的结构称为一个 namespace块。namespace块中可以包含各种名字的定义。