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()
{
         …
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,438评论 19 139
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 8,083评论 0 27
  • { "Unterminated string literal.": "未终止的字符串文本。", "Identifi...
    栗子雨阅读 8,068评论 0 3
  • 本文转载自:C++ 命名空间namespace 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、...
    Yihulee阅读 5,125评论 0 6
  • 浅水逐新绿, 疏柳眺远山。 郊外春来早, 暖风使人酣。 桃花正吐蕊, 樱花初娇艳。 更待春雨后, 缤纷满人间。
    凿冰而钓阅读 331评论 0 0

友情链接更多精彩内容