C++中的I/O stream类

ios_base:顶层基类

basic_ios<>:派生自ios_base的template class 。具体定义:

template<class charT, class traits = char_traits<charT> >
class basic_ios :public class ios_base {};

basic_istream<> / basic_ostream<>:两者虚拟派生自basic_ios<>的模版类。具体定义:

template<class charT, class traits = char_traits<charT> >
class basic_istream :virtual public class basic_ios <charT, traits> {};
template<class charT, class traits = char_traits<charT> >
class basic_ostream :virtual public class basic_ios <charT, traits> {};

basic_iostream<>:派生自basic_istream<>和basic_ostream<>的模版类。为了避免多重继承中由多个父类共同的基类产生的二义性,所以basic_istream<> / basic_ostream<>需要虚拟派生自basic_ios<>。具体定义:

template<class _Elem,class _Traits>
class basic_iostream
	: public basic_istream<_Elem, _Traits>,
	  public basic_ostream<_Elem, _Traits> {}

basic_fstream<>:派生自basic_iostream<>的模版类。具体定义:

template<class _Elem, class _Traits>
class basic_fstream
    : public basic_iostream<_Elem, _Traits> {}

basic_ifstream<>:派生自basic_istream<>的模版类。具体定义:

template<class _Elem, class _Traits>
class basic_ifstream
    : public basic_istream<_Elem, _Traits> {}

basic_ofstream<>:派生自basic_ostream<>的模版类。具体定义:

template<class _Elem, class _Traits>
class basic_ofstream
    : public basic_ostream<_Elem, _Traits> {}

我们熟悉的iostream、istream、ostream、fstream、ifstream、ofstream、ios都是上述模版类的特例型别。具体定义:
typedef basic_ios<char, char_traits<char> > ios;
typedef basic_istream<char, char_traits<char> > istream;
typedef basic_ostream<char, char_traits<char> > ostream;
typedef basic_iostream<char, char_traits<char> > iostream;
typedef basic_ifstream<char, char_traits<char> > ifstream;
typedef basic_ofstream<char, char_traits<char> > ofstream;
typedef basic_fstream<char, char_traits<char> > fstream;

写这些,主要就是为了理清c++中stream classes的整个继承体系。


转载于:https://www.cnblogs.com/newhand-liu/archive/2012/03/05/2793305.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值