c++ namespace

2021-04-24 07:26

阅读:434

标签:嵌套命名空间   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


评论


亲,登录后才可以留言!