笔记:C++命名空间

内容来自C++ primer 5th函数

       大型程序常常会使用多个独立开发的库,这些库又会定义大量的全局名字,不可避免地会发生名字冲突的状况。spa

       命名空间:为防止名字冲突提供了更加可控的机制。命名空间分隔了全局命名空间,其中每一个命名空间是一个做用域。经过在某个命名空间中定义库的名字,能够避免全局名字的冲突。生命周期

 

定义:作用域

namespace space_name{开发

  //声明和定义,只要能出如今全局做用域中的就能在命名空间中模板

  //主要是类,变量,函数,模板,其余命名空间变量

}命名空间

命名空间结束不用分号。程序

命名空间的名字也必须在定义它的做用域内保持惟一。im

命名空间不能定义在类和函数内部。

每一个命名空间都是一个做用域。

 

命名空间的定义能够分红几个部分,不用一次性定义完。

好比:

namespace nsp{
}

多是定义了一个名字为nsp的新命名空间,也多是为已经存在的命名空间添加一些新成员。

 

模板特例化必须定义在原始模板所属的命名空间中。

 

内联命名空间

C++11新标准

和普通的嵌套命名空间不一样,内联命名空间中的名字能够被外层命名空间直接使用,也就是说,不用在内联命名空间的名字前加上表示该命名空间的前缀。

inline namespace space_name{

}

inline必须出如今命名空间第一次定义的地方,之后再打开命名空间的时候能够写inline,也能够不写。

 

未命名的命名空间

指关键字namespace后面直接是{}

未命名的命名空间中定义的变量拥有静态生命周期:在第一次使用前建立,直到程序结束才销毁。

相关文章
相关标签/搜索