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的整个继承体系。

浙公网安备 33010602011771号