为什么不是istream :: operator>>有一个需要char的重载?

时间:2014-10-10 18:55:22

标签: c++ stream

除了char之外,

istream::operator>>有一个重载,可以写入任何类型的变量。那是为什么?

2 个答案:

答案 0 :(得分:3)

std::istreamstd::ostream都有两组重载。数字类型,操纵器类型和缓冲区的定义为成员函数,而基于字符的I / O的定义为全局函数。除了基于字符的重载之外,还有不同标准类的重载,例如std::stringstd::complex。您自己甚至可以为不同的自定义类实现不同的重载。

答案 1 :(得分:1)

operator>>non-membermember次重载。您正在寻找的char重载是函数模板,而成员重载是非模板化的。例如:

template< class CharT, class Traits >
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>& st, CharT& ch );