c++ namespace
2021-04-24 07:26
标签:嵌套命名空间 strong pac 标准 space c语言 int style 没有
命名空间的定义:
namespace
示例如下:
namespace nsp { // 定义一个名为nsp的命名空间
int test = -2;
} // 后面无须分号
全局命名空间:
全局命名空间以隐式的方式声明,并且在所有程序中都存在,全局作用域中的名字被隐式地添加到全局命名空间中。
作用域运算符同样可以用于全局作用域的成员,因为全局作用域是隐式的,所以它并没有名字。如下形式
::member_name
表示一全局命名空间中的一个成员。
嵌套命名空间:
- 嵌套命名空间同时是一个嵌套的作用域。在嵌套的命名空间中定义的名字只在内层命名空间中有效,外层命名空间中的代码要想访问它必须在名字前面加上限定符。
示例如下:
nsp:tong::test
内联命名空间:
- 内联命名空间中的名字可以被外层命名空间直接使用。也就是说,我们无须在内联命名空间的名字前添加表示该命名空间的前缀,通过外层命名空间的名字就可以直接访问。
匿名命名空间:
示例如下:
namespace { // 定义一个匿名命名空间
int test = -2;
}
- 匿名命名空间是指关键字namespace后紧跟花括号括起来的一系列声明语句。未命名空间中定义的变量拥有静态生命周期:它们在第一次使用前创建,直到程序结束后才销毁。
- 匿名命名空间可以在某个不给定的文件内不连续,但是不能跨越多个文件每个文件定义自己的匿名命名空间,如果两个文件都含有匿名命名空间,则这两个匿名命名空间互相无关。
- 和其他命名空间不同,匿名命名空间公在特定的文件内部有效,其作用范围不会横跨多个不同的文件。
- 在标准C++引入命名空间的概念之前,程序需要将名字声明成static的以使其对于整个文件有效,在文件中进行静态声明的做法是从C语言继承而来的,在文件中进行静态声明的做法已经被标准C++取消了,现在的做法是使用匿名命名空间。
命名空间的别名:
示例如下:
namespace longnamespace {
int test = -2;
}
namespace nsp = longnamespace; // 给longnamespace这个命名空间起个别名nsp
c++ namespace
标签:嵌套命名空间 strong pac 标准 space c语言 int style 没有
原文地址:https://www.cnblogs.com/tongyishu/p/13266773.html
下一篇:剑指offer 构建乘积数组 图