iostream与iostream.h的区别


Posted in 面试题 onJanuary 16, 2015

参考答案:namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两 个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件 不使用后缀.h。因此,当使用时,相当于在c中调用库函数,使用的是全 局命 名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空 间, 必须使用namespace std,这样才能正确使用cout。
PS:namespace的使用:
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。
using std::cout;
using std::endl;
以上程序可以写成
cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std;
例如:
#include
#include
#include
using namespace std
这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
cout << hex << 3.4 << endl;因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使 用了多年的伪标准库中的功能,他们都是在全局空间下的。 所以就有了和 等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加”.h”。


Tags in this post...

面试题 相关文章推荐
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
Nov 09 面试题
Android面试题附答案
Dec 08 面试题
数据库专业英语
Nov 30 面试题
什么是重载?CTS、CLS和CLR分别做何解释
May 06 面试题
什么是反射?如何实现反射?
Jul 25 面试题
2019年.net常见面试问题
Feb 12 面试题
关于VPN
Jun 10 面试题
世界经理人咨询有限公司面试
Sep 23 面试题
几个Linux面试题笔试题
Aug 01 面试题
瀑布模型都有哪些优缺点
Jun 23 面试题
什么是继承
Dec 07 面试题
信号量和自旋锁的区别?如何选择使用?
Sep 08 面试题
经典c++面试题六
Jan 18 #面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
Aug 09 #面试题
下面关于"联合"的题目的输出是什么
Aug 06 #面试题
"引用"与指针的区别是什么
Sep 07 #面试题
经典c++面试题五
Dec 17 #面试题
经典c++面试题四
May 14 #面试题
"引用"与多态的关系
Feb 01 #面试题
You might like
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
php扩展开发入门demo示例
2019/09/23 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
javascript 写类方式之二
2009/07/05 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python读取yaml文件的详细教程
2020/07/21 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
HTML5等待加载动画效果
2017/07/27 HTML / CSS
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
小学生安全保证书
2014/02/01 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
2014年度思想工作总结
2014/11/27 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
mysql事务隔离级别详情
2021/10/24 MySQL