• C++入门之命名空间详解


    目录

    一、为什么要使用命名空间

    ​二、域作用限定符

    三、同名空间会合并

    四、展开命名空间(慎) 

    五、指定展开 


    一、为什么要使用命名空间

    命名空间的功能就是区分不同的代码段,避免使用不同代码时带来变量名冲突的问题

    在写C语言代码时,常常回面临命名冲突的问题。例如: 

    可以成功运行。

    但是如果要使用 time.h 头文件时,就会与库发生冲突 

    还有在包其他同学写的头文件时,也有会发生命名冲突的可能。 

    为了解决这一问题,C++引入了命名空间,把自己写的代码放进命名空间中,就能解决这一问题。

     

     我们可以看到,上面显示重定义的错误在给我们自己定义的变量加上命名空间后就消失了

    程序运行后就打印出来了clock这个函数指针的值

    1、其中,namespace 就是定义命名空间的关键字,后面跟着你的命名空间的名字,再用大括号括起来,大括号里面就是你的命名空间了。

    2、命名空间就像是一堵无形的墙,把里面的代码和外面的隔开了,所以编译器只能找到库里面的clock

     3、要注意的是,命名空间不能和别人或者库里的发生冲突,不然也会报错的。如下:

     二、域作用限定符

    1、那我们命名空间里的变量在外面如何使用呢?

    就是用域作用限定符  :: (两个冒号)

    命名空间名字::变量名    就可以使用了。 

     2、如果命名空间里面还有一个命名空间怎么使用最里面的命名空间?

    命名空间是可以嵌套的,

    使用里面命名空间的方法就是 外命名空间名字::里命名空间名字::变量名

    三、同名空间会合并

     在同一个文件或不同文件中定义的同名命名空间会合并。

     我们在写代码时,经常要写一个头文件,一个.c 或.cpp 文件。

    此时可以在头文件和.c 或.cpp 文件中定义一个同名命名空间,这样就可以声明与定义分离。

    四、展开命名空间() 

    相信大家在写 cpp 代码时经常会写 using namespace std;

    这句话的意思就是展开命名空间std

    展开命名空间就是把命名空间里的代码全部暴露出来本来变量只在全局变量中找,展开命名空间后也会去命名空间里面查找。     

    展开命名空间的方法就是用using namespace 命名空间名字 来展开命名空间

     

     1、展开命名空间后可以指定也可以不指定,指定命名空间后就会只会去指定的空间查找

           不指定命名空间就会在全局以及展开的命名空间中查找

    2、可以展开多个命名空间

    3、不推荐在写项目时展开命名空间,因为我们使用命名空间就是为了封装起来,现在又展开显得多此一举,而且展开命名空间很有可能会在使用时发生冲突,如上。

    五、指定展开 

     展开命名空间会有风险,而一直用域作用限定符又很累,此时就可以使用我们的指定展开

    如:当我们再写常用的如:cout 、cin、endl等等时,一直写std::cout, std::cout....很不方便时

    就可以采用指定展开,用法:using 命名空间名字::变量名;

    例如:using std::cout;

     此时会报错

     指定展开后,成功运行

    推荐使用指定展开,这样既可以避免风险,也能让我们更轻松。

     感谢大家观看!

  • 相关阅读:
    【论文阅读】机器翻译新范式,《A Paradigm Shift in Machine Translation》
    51单片机数字电压表仿真设计_LCD显示
    Android Studio实现一个点餐系统
    淘宝/天猫api 获取淘宝商品详情高级版 API接口
    MFC使用友元函数访问窗体类成员变量
    微信小程序开发学习——顺序、选择、循环、数学函数
    一款完全开源免费的快速开发框架:基于LayUI+SpringMVC+Spring+Hibernate+Mysql搭建而成
    MySQL事务(清晰易懂)
    linux keynav 鼠标可以扔掉了键盘控制鼠标
    关于linux与android传输代码tcp -传文件
  • 原文地址:https://blog.csdn.net/m0_74626010/article/details/133769169