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

  • 相关阅读:
    Zabbix 3.0编译安装
    用Python发布自己的代码
    欧拉公式为世界上最完美的公式
    通过别人远端安装anaconda来说配置文件
    jupyter安装与使用
    make在latex中的妙用
    latex源码到PDF文件
    anconda配置国内源
    git命令速查
    一张色环图教你搞定配色(转)
  • 原文地址:https://www.cnblogs.com/tongyishu/p/13266773.html
Copyright © 2011-2022 走看看