zoukankan      html  css  js  c++  java
  • 笔记:C++命名空间

    内容来自C++ primer 5th

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

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

    定义:

    namespace space_name{

      //声明和定义,只要能出现在全局作用域中的就能在命名空间中

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

    }

    命名空间结束不用分号。

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

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

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

    命名空间的定义可以分成几个部分,不用一次性定义完。

    比如:

    namespace nsp{
    }

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

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

    内联命名空间

    C++11新标准

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

    inline namespace space_name{

    }

    inline必须出现在命名空间第一次定义的地方,以后再打开命名空间的时候可以写inline,也可以不写。

    未命名的命名空间

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

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

  • 相关阅读:
    css中span元素的width属性无效果原因及多种解决方案
    CentOS、Ubuntu、Debian三个linux比较异同
    linux系统中/etc/syslog.conf文件解读
    /proc/interrupts 和 /proc/stat 查看中断的情况
    网卡优化RPS/RFS
    关于Linux网卡调优之:RPS (Receive Packet Steering)
    rsync详解之exclude排除文件
    Linux rsync 同步实践
    CentOS 6.3下rsync服务器的安装与配置
    解决linux下/etc/rc.local开机器不执行的原因
  • 原文地址:https://www.cnblogs.com/-maybe/p/7495220.html
Copyright © 2011-2022 走看看