zoukankan      html  css  js  c++  java
  • c++ namespace

    命名空间的定义:

           namespace <space_name>{}

      示例如下:

           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

  • 相关阅读:
    ADO.NET的记忆碎片(四)
    ADO.NET的记忆碎片(八)
    卡特兰数 应用
    hdu 1249 三角形
    hdu 1143
    nyist 93 汉诺塔(三)
    hdu 1123 Train Problem II
    hdu 1133 Buy the Ticket
    hdu 1022 Train Problem I
    nyist 610 定长覆盖
  • 原文地址:https://www.cnblogs.com/tongyishu/p/13266773.html
Copyright © 2011-2022 走看看