前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >命名空间&作用域限定符

命名空间&作用域限定符

作者头像
用户10551528
发布2024-03-18 08:53:57
880
发布2024-03-18 08:53:57
举报

namespace

命名空间要定义在全局,不能定义在局部

同一个域里面的同名的命名空间的内容会被合并

命名空间可以嵌套

命名空间通常放在头文件

命名空间不影响生命周期

代码语言:javascript
复制
namespace cyj{
    int a = 10;
    struct test{
        string name;
    };
    class Test{
        int age;
	};
}
namespace bit{
    int a = 20;
    int add(int first, int second){
        return first+second;
    }
}

using namespace bit;
//1.使用命名空间内定义的变量时,可以提前将命名空间展开,然后直接使用
int main(){
    
    int c = add(cyj::a, a); // ::域作用限定符
    //2.若不展开,也可以用域作用限定符来表示这是某个命名空间内定义的变量
    return 0;
}

:: 为域作用限定符,作用是说明符号右侧的变量是符号左侧的空间域里定义的那一个

比如cyj::a就是说这个a是命名空间域cyj里定义的变量a(而不是其他域比如bit命名空间域或者某个局部域里面定义的变量a

比如两个叫浴巾的人,一个来自山东,一个来自广东,在同一家公司工作,称呼他们的时候,为了防止重名,会叫“山东来的浴巾”或者“广东来的浴巾”

内嵌在一个外部命名空间的内部命名空间,在使用using namespace进行展开时,要先展开外部命名空间,再展开内部命名空间,否则找不到内部命名空间

代码语言:javascript
复制
namespace cyj{
    namespace yj{
        int a;
    }   
    namespace test{
        int b;
    }
}

using namespace cyj::test;//也可以通过域作用限定符直接展开外部命名空间里面的命名空间

#using namespace yj;//不能先展开,要先展开外部的
using namespace cyj;
using namespace yj;//先展开外部命名空间,再展开内部的


int main()
{
    int c = a + b;
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • namespace
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档