C++中using namespace std 的具体含义

using namespace std的作用

我觉得在介绍using namespace std的作用之前,应该先讲一下如果没有using namespace std这句代码,会对你的代码以及编程效率会有什么影响。

删掉using namespace std的影响

最直观的一个影响就是,你的cin和cout就不能用的那么简洁明了了。
正常情况下,例如我要输出一个hello world!
C++代码是:

#include<iostream>
using namespace std;
int main(){
	cout<<"hello world!"<<endl;
	system("pause");
	return 0;
}

可是如果你删掉了using namespace std并且还想输出hello world!,你的代码要做出什么修改?
变成了:

#include<iostream>
int main(){
	std::cout<<"hello world!"<<std::endl;
	system("pause");
	return 0;
}

怎么样?最直观的感受就是,你的代码变长了。
那么这是为什么?
因为平常我们用的cin和cout还有endl都是定义在名为std的命名空间中的。当然std命名空间内所拥有的远不止这些。

std::cout意思为编译器应从操作符(::)左侧的名字所示的作用域中寻找到右侧那个名字,因此std::cout的意思是要使用命名空间std中的名字cout。

using namespace std最安全的写法

using namespace std简单一句代码,确实可以减轻我们在编写C++程序的负担,但是using namespace std并不是最安全的写法,如果你的程序比较简单,用using namespace std貌似没什么问题,可是当你的工程量太大,声明的变量太多,有可能会发生你声明的变量名与std命名空间内部的名字发生冲突的情况,从而产生BUG。

最安全的写法便是使用using 声明,有了using声明就无须专门的前缀(例如::)也能使用所需的名字。
using声明的形式:
using namespace :: name;(这个是通用格式,并不是具体代码)
只要声明了↑上述语句,就可以直接使用命名空间的名字。

还是以输出hello world!为例,用最安全的方法来写就是。

#include<iostream>
using std::cout;
using std::endl;

int main() {
	cout << "hello world!" << endl;
	system("pause");
	return 0;
}

上述代码使用了using std::cout;和using std::endl;两个using声明。
这样子我们后续使用cout和endl都不需要再次声明前缀了,因为我们没有写cin的using声明,所以我们代码中还可以将cin作为变量来使用,而不是作为一个输入流来看待。

总结

using namespace std;这个using声明是将std命名空间内的名字,全部暴露在外,只要访问std命名空间内的名字,我们都不需要写额外的前缀,唯一的缺点就是,存在自己所使用的变量名可能与std命名空间内的名称发生冲突。

最安全的写法就是需要使用到std命名空间内的什么名字,对其进行using声明,这样子就不存在会与std命名空间内的名称发生命名冲突了。

  • 45
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值