C++ 头文件系列(iosfwd)

简介

输入输出历来都是言语的严重性部分,在C++中,该库也是占了相当可怜的同等有的。
C++的输入输出库是那依照面向对象设计的结果,并组成了泛型编程

以下是这些库类的关系图(箭头标示继承,白框代表摸板,黑框表示摸板实例):

iosfwd

声明

拖欠文件之齐全是“input output stream forward”,即输入输出流前向声明
顾名思义,该头文件之机要目的就是是为用户提供所有输入输出类的声明

当你在一些只有待这些类似声明,而未需定义的地方
(例如:自定义的条文件被),就足以简简单单的include这个腔文件。

定义

但是,实践是查验真理的唯一标准。
事实上,iosfwd头文件也含有了有的摸板定义(摘自VS2013 版本iosfwd):

此地可以看,语言标准库中之name经常是以_一马当先的,所以在去轮子的时光,不过不要定义为_始发之称号,以避免名字冲突

typedef

iosfwd还蕴藏了一些typedef。

也许很多开发者会以为奇怪,为什么自己运iostream类模版出现编译错误的当儿,错误信息里含的却是basic_iostream<char, ...>,完全看不到任何iostream字符。

哈哈,因为iostream类实际上基本类模版basic_iostream的实例化模版类(>-<读起来是勿是非常别扭)。

STL使用了汪洋泛型编程,但是用泛型编程的一个短就是是—-类名会变得老大丰富。例如,vector<
map< string, ostream > >。
想想看,如果老是声明对象的早晚还如描写清楚这么长一个列,那编程一定会变成一宗很低俗之从业。
这个上typedef就异常实用了:


……

扣押,长长的类型名是不是一下子即转换短了!