using namespace std的详细说明

先来看一行代码:using namespace std;

这个是我们学习c++最先接触到的,可是为什么要出现这行代码呢?来看以下两个代码:

   那这两个代码的区别仅仅是多了一个头文件,但是就是因为这一个小小的区别,使得第二个代码运行错误。那是因为#include <stdlib.h>中定义了rand函数,错误的原因也就是命名冲突。那我们在C语言中解决此类方法也只有修改变量名,可是当我们未来在进行一个多人合作的大项目时,将每个人的代码整合起来,难免会出现一些命名冲突。还有就是和团队一起写代码时,多个人设置的变量名相同,此时出现冲突,那该用谁的呢?谁改这个变量名呢?(我的建议是打一架,谁输了谁改哈哈)

  于是C++就来填C语言这个坑了,引入了命名空间。

 

   那么此时打印的rand是全局的还是命名空间里的呢?默认情况下是全局里的,而全局里的rand是一个函数指针。那我们想访问命名空间里的rand,这得引用域作用限定符:: 用这个来限定一下范围。

命名空间定义举例:

//命名空间可以定义变量/函数/类型
namespace std 
{
	int rand = 0;
	
	int add(int a, int b)
	{
		return a + b;
	}
	struct Node
	{
		struct Node* next;
		int val;
	};
}
 
int main()
{
	printf("%d\n", std::rand);
	printf("%d\n", std::add(7,20));
 
	struct std::Node node;
 
	return 0;
}

  

那我们每次想用命名空间,都得用域作用限定符指定,确实有点麻烦。此时using namespace std;就派上了用场,它可以让我们不指定就访问。这句话意思是展开命名空间,这个是全部展开,此外还有部分展开的形式using std::add;

  

#include <stdio.h>

namespace std
{
	int add(int a, int b)
	{
		return a + b;
	}
}
using std::add;

int main()
{
	printf("%d\n", add(7, 20));

	return 0;
}

  这就是命名空间使用的三种方式。

  现在我们来解释using namespace std;

  std是C++标准库的命名空间,也就是说C++库里所有的各种东西都会放到这个命名空间中,避免了工作中与其他团队成员定义的东西冲突。以下图片可以帮助大家理解:

 

 另一种解决方法,也很简单:

#include <iostream>
 
int main()
{
	std::cout << "你好" << std::endl;
 
     return 0;
}

  以上就是本篇内容,创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,如果喜欢我的文章,给个关注吧!

如果本篇博客有任何错误,请批评指教,不胜感激 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值