0
点赞
收藏
分享

微信扫一扫

【命名空间】using namespace std是什么意思?

狐沐说 2022-05-06 阅读 52

文章目录

一、 前言

 C++中的using namespace std是什么意思呢?为了理解其中的含义,我们首先需要学习一个概念叫做命名空间
 我们都知道,C语言规定变量名不能与关键字冲突,但是并没有规定变量名不能与库中的变量名冲突,但这在实际的操作的过程中就会产生意向不到的错误:
 如果time变量放在main函数中,根据局部优先的原则,那么time就会被理解为一个局部变量。但当time作为一个全局变量出现的时候,由于time库中也含有一个名叫time的函数名,因此time被理解为变量名还是函数名就会产生冲突
在这里插入图片描述
 而C++中出现的命名空间概念就是为了填C语言中的这个坑。


二、作用域分解运算符

 在讲命名空间的时候首先给大家介绍一个作用域分解运算符 " :: "

 前面说到变量名冲突的时候遵循局部优先原则,那么我们能不能就想访问到全局变量呢?我们就可以通过作用域分解运算符实现:
在这里插入图片描述


三、命名空间使用介绍

namespace my_variant
{
	int time = 10;
}

int main()
{
	printf("%d", my_variant::time);
}
namespace my_variant
{
	int time = 10;

	typedef struct Stu
	{
		char name[10];
		int age;
		int score;
	}Stu;
	
	namespace _variant
	{
		int Add(int a, int b)	
		{
			return a + b;
		}
	}
	
}

int main()
{
	my_variant::Stu data = {0};
	int ret = my_variant::_variant::Add(1, 2);
}

 当然我们可以看到,每次要使用命名空间中的变量都需要写很多额外的内容,有没有什么办法可以简化操作呢——我们想要访问命名空间中的space_b有两种方法:

namespace space_a
{
	int a1 = 1;
	int a2 = 2;
	namespace space_b
	{
		int b1 = 10;
		int b2 = 20;
		int b3 = 30;
	}
	namespace space_c
	{
		int c1 = 5;
		int c2 = 6;
	}
}
using namespace space_a;
using namespace space_b;
using namespace space_a:: space_b;

释放出来之后我们便可以愉快自由的使用了:
在这里插入图片描述


四、using namespace std

 经过上面的学习,我们不难理解using name std的作用是释放std命名空间中的变量名,函数名以及类型名,其中std是C++标准库的命名空间。
 我们在书写代码的时候为了方便于是将C++标准库中的命名空间完全展开了,但是最好的做法我想还是用什么放什么

举报

相关推荐

0 条评论