C++ 名称空间(一些指导原则)

名称空间的一些指导原则:

  1. 使用在已命名的名称空间中声明的变量,而不是使用外部全局变量。
  2. 使用在已命名的名称空间中声明的变量,而不是使用静态全局变量。
  3. 如果开发了一个函数库或类库,将其放在一个名称空间中。事实上,C++ 当前提倡将标准函数库放在名称空间 std 中,这种做法扩展到了来自C语言中的函数。例如,头文件 math.h 是与 C 语言兼容的,没有使用名称空间,但 C++ 头文件 cmath 应将各种数学库函数放在名称空间std中。
  4. 仅将编译指令 using 作为一种将陈旧代码转换为使用名称空间的权宜之计。
  5. 不要在头文件中使用 using 编译指令。首先,这样做掩盖了要让哪些名称可用;另外,包含头文件的顺序可能影响程序的行为。如果非要使用 using 编译指令,应将其放在所有预处理器编译指令 #include 之后。
  6. 导入名称时,首选使用作用域解析操作符或 using 声明的方法。
  7. 对于using声明,首先将其作用域设置为局部而不是全局。

未命名的名称空间:

namespace
{
         int  zdsCool;
         int  zdsHot;
}

这就像后面跟着 using 编译指令一样,也就是说,在该名称空间中声明的名称的潜在作用域为:从声明开始点到声明区域末尾。从这方面看,它们与全局变量相似。不过,由于这种名称空间没有名称,因此不能显示的使用 using 编译指令或 using 声明来使它在其它位置都可用。具体地说,不能在未命名名称空间所属文件之外的其他文件中,使用该名称空间中的名称,因此该方法可替代链接性为内部的静态变量。实际上,C++ 标准不赞成在名称空间和全局作用域中使用关键字 static(该标准使用“不赞成”表明,这种做法,目前合法,但以后很可能将其视为非法)。例如,下面代码:

static int  nCount;

int fun1();

int main()
{
         …
}

int fun1()
{
         …
}

C++ 标准的意思是,程序员应该这样做:

namespace
{
         int  nCount;
}

int fun1();

int main()
{
         …
}

int fun1()
{
         …
}

你可能感兴趣的:(C++ 名称空间(一些指导原则))