关于iostream与using namespace std

首先理解一下两者定义

iostream是C++标准库的头定义,对应的基本上是C++的输入输出相关库定义。类似于stdio 是C标准库里面的函数库,对应的基本都是标准输入输出等等C语言常用库的定义。开发C程序用Stdio,C++用Stdio/iostream 都可以。

using namespace(命名空间) std 顾名思义就是使用命名空间std,

什么是命名空间呢?就好比是多重空间,他们之间是互相独立的个体,不同空间里的定义和命名互不影响。

为什么需要要命名空间呢?在没有引入名字空间的概念之前,用户在一个cpp文件(即用C或C++代码写的源码文件)的开始位置一般会引入头文件,比如<stdio.h>或者<iostream>,这里面就包含有已经定义好的全局变量、函数名、和类名,如果这些全局变量、函数名、和类名数目不多,那程序员在写自己的程序时引入的新名称还不容易重复。但是如果很不幸引入了多个头文件,那么这些头文件里的全局变量、函数名、和类名非常多,程序员在写自己的代码段时就很容易造成名字重复了。若我们同时把C的标准库<stdio.h>、<ctype.h>、<stdlib.h>、<string.h>、<assert.h>、<limits.h>、<stddef.h>、<time.h>、<float.h>、<math.h>、<error.h>、<locale.h>、<setjmp.h>、<signal.h>、<stdarg.h>引入到头文件中,那名字重复的概率就很大了。这时编译器该匹配哪个呢?只好取决于哪个库文件先被引用到文件中,并且把另外一个完全屏蔽掉。这显然不是一个好的方法。在标准库的产生过程中,这个问题被提了出来。为了解决上面这个问题,C++引入了名字空间(namesapce)的概念,对于C++的标准库而言,其对应的名字空间为std,标准库的组件都在名空间std中定义,由用户手动引入到程序中。

那么名字空间为啥能解决名字重复的问题呢?以下例子

//定义命名空间A
namespace A
{
   int a=0;//在命名空间A中定义变量a
}
//1、定义命名空间B
namespace B
{
   int a=0;//在命名空间B中定义变量a
}
int main()
{

//使用命名空间的基本方法1	

	using namespace B;//告诉编译器我要使用命名空间B中的功能了

	a=10;             //将命名空间B中的变量“a”由0更改为10,命名空间A的a不会改变

    cout<<a<<endl;
}

C++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h,即出现了现在的<iostream>头文件。当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用C++所规定的标准的命名空间(即:namespace std),这样才能正确使用cout、endl等功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值