• C++ 命名空间


    C

    在C语言中只有一个全局作用域

    C语言中所有的全局标识符共享同一个作用域

    标识符之间可能发生冲突

    C++

    命名空间将全局作用域分为不同的部分

    不同命名空间中的标识符可以同名而不会发生冲突

    命名空间可以相互嵌套

    全局作用域也叫默认命名空间

    作用

    避免名字定义冲突和使用库中相同名字导致的冲突,更好地控制标识符的作用域。

    定义命名空间

    namespace name{...}

    使用

    使用整个命名空间:using namespace name;

    使用命名空间中的变量:using name::variable;

    使用默认命名空间中的变量:::variable

    默认情况下可以直接使用默认命名空间中的所有标识符

    可以嵌套使用

    namespace A{

    namespace B{

    a

    }

    }

    使用:A::B::a

    使用方式

    a.using namespace std;

    //namespace是一个命名空间的关键字,总的意思是:从此条命令后都是使用这个空间

    b.using std::对象; //只能有一个对象

    c.std::对象+其它

    例子

    使用标准库中的一个名字时,必须显式说明我们想使用来自命名空间 std 中的名字

    namespace std1{ int a1 = 1;};

    namespace std2{int a1 = 2;};

    int main()

    {

    a1 = 0;//全局

    std1::a1 = 11;

    std2::a1 = 22;

    }

    using 声明

    有了 using 声明就不需要专门的前缀也能使用所需的名字【只需使用 using 声明声明一次,在之后使用时就不需要使用前缀】

    using namespace::name;

    每个名字都需要独立的 using 声明

    每个 using 声明引用命名空间中的一个成员。

    头文件不应包含 using 声明

    位于头文件的代码一般不应该使用 using 声明,因为头文件的内容会拷贝到所有引用它的文件中。若头文件中有某个 using 声明,每个使用该头文件的文件都会有这个声明,可能会造成名字冲突。

  • 相关阅读:
    Vagrant+VirtualBox+Docker+MySQL+Redis+Nacos
    使用TinyXML-2解析XML文件
    风控指南 | 风控引擎如何快速管理组件?
    【51单片机】10-蜂鸣器
    pandas使用分位数+控制变量法进行多条件数据筛选
    【运维】Linux修改Hosts
    【WINDOWS / DOS 批处理】IF命令之比较运算符证明实例
    面试题:Spring Boot Starter的功能与使用场景
    Python爬取小说
    vscode自动添加文件和函数注释
  • 原文地址:https://blog.csdn.net/weixin_65951505/article/details/133942305