当前位置:   article > 正文

c++入门(命名空间和域访问运算符)_c++有限域运算

c++有限域运算

问题描述

在C语言中我们常常会遇到如下问题

#include <stdio.h>
#include <stdlib.h>

int rand = 1;

int main()
{
	printf("%d\n", rand);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

也就是我们常说的命名冲突,其中最典型的有两种
1.与库里面的函数名冲突(如上图所示)
2.项目中与他人命名冲突

解决方案:

为了解决C语言中这个问题,我们的祖师爷本贾尼创造了命名空间,也就是namespace关键字,同时域的概念也横空出世,所以上诉问题得到了如下解决方式

namespace JS
{
	int rand = 1;
}

int main()
{

	printf("%d\n", js::rand);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述
相当于创造了一个叫JS的作用域,它不受全局域和局部域的影响

这里为了更好的向下讲,我们先介绍一下域的概念和::域操作运算符

域分为:局部域,全局域,命名空间域

域操作运算符::前面使用域的名称便可以去想要访问的域中搜索

搜索的顺序为(局部域>全局域>命名空间域)

用代码展示如下


int a = 1;

namespace JS
{
	int a = 2;
}

int main()
{
	int a = 3;
	printf("%d\n", a);    //表示搜索局部域
	printf("%d\n", ::a);  //::前面为空代表搜索全局域
	printf("%d\n", JS::a);//表示搜索命名空间域
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述
效果如上

然后我们讲解命名空间的展开,这里我们以c++库中的cout,endl函数展开讲解

我们首先要知道std是c++中的一个命名空间

在这里插入图片描述

首先不展开的情况如下

在这里插入图片描述

第一种:用using namespace + 命名空间名展开

在这里插入图片描述
在这里插入图片描述

第二种

在这里插入图片描述

在这里插入图片描述

第三种

在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/51694
推荐阅读
相关标签
  

闽ICP备14008679号