深圳C++培训
达内深圳龙华中心

139-2227-5185

热门课程

C++命名空间的常见用法

  • 时间:2017-10-09
  • 发布:深圳C++培训
  • 来源:达内新闻

C++命名空间的常见用法

c++ 中的命名空间一般用于防止命名冲突。虽然命名空间在最近的 c++ 代码中广泛运用,但大多数较旧代码都不运用此东西。

根据对很多C++项目源码的探究与研讨,总结出了在这些项目中运用命名空间的一些常见原因。

防止名称冲突

如前所述,这是在C++中运用命名空间最常见的原因,在这种情况下,它们的运用只是对编译器有用。无法为开发人员在代码可读性和保护性方面带来什么价值。

模块化应用程序

命名空间采纳 “Namespace-by-feature ”的办法使代码模块化。”Namespace-by-feature” 通过命名空间来反映功用集。它将具有相互相关的项归类在同一个命名空间。

这会构成具有高内聚低耦合(译者注:高内聚是指一个软件模块是由相关性很强的代码组成,只担任一项使命。耦合是一个软件结构内不同模块之间互连程度的度量)、模块性很强的命名空间。

Boost是按功用分组的最佳示例, 它包含数以千计的命名空间, 每一个都用于对特定功用进行分组。

匿名命名空间

匿名的命名空间可防止发生大局静态变量。您创立的 “匿名” 命名空间只能在创立它的文件中拜访。

处理枚举类型成员重名问题

如果在同一个作用域内定义了具有相同名称的枚举,C++中的“传统”枚举会在其作用域内导出枚举值,可能会导致名称冲突,

在一个大型项目中,不能确保两个不同的枚举都不会以同名命名。这个问题在C++ 11中现已得以处理,它运用枚举类,隐式地对枚举名称中的枚举值进行定义。

许多年前, 运用在命名空间内声明枚举的技巧处理这个问题, 而不是像这样声明枚举

     enum status{  

       status_ok,  

        status_error  

    };

它在命名空间中声明:

     namespace status{  

       enum status{  

         ok,

          error  

     };  

    }

许多 c++ 项目运用此技巧,例如Unreal Engine(译者注:UNREAL ENGINE中文名称为“虚幻引擎” ,是现在国际最闻名授权最广的顶尖游戏引擎,占有全球商用游戏引擎80%的市场份额)源代码就广泛运用此技能。
躲藏完成

关于在头文件中完成的模板库,开发者在调用时不需要用到特别的数据类型,由于他们只专心于功用的完成,所以关于找到一种合适开发者调用库的办法是很风趣的。

在c#中, “internal” 关键字做了这项作业, 但是在c++中,没有办法将公有数据类型彻底对开发者进行躲藏。

在模块中将定义和完成别离,是由Boost库开发者们创立的一个c++惯用语法,但这些定义必须依照规矩放入到一个可供开发者调用sub-namespace(子命名空间)中。

想知道更多关于IT行业的信息吗?想远远不如行动,行动起来,一起加入达内,一起进入IT行业,跟着达内的脚步,一起走进如今的互联网信息时代,带给你不一样的色彩生活——【深圳C++培训

上一篇:快速掌握C语言函数,C语言函数的定义和函数调用过程
下一篇:C++库大全,你知道几个?

书写C++程序的格式

深圳C++培训:一起说说 C++ Traits Classes

深圳C++培训:c++运算符重载总结

2017年如何系统的学习C++编程语言 - 深圳C++培训

选择城市和中心
贵州省

广西省

海南省