istream :: operator>>(const char&)如何实现这样的功能?

时间:2013-08-23 13:25:13

标签: c++ operators istream

查看istream documentation,您将看到没有函数istream &operator>>( char& )的实现,但如果您编译并运行下面的代码,它将按预期工作。

#include<iostream>

int main( ) {

  char c;

  std::cin >> c;

  std::cout << c << std::endl;

  return( 0 );

}

给定cin是类istream的对象,调用operator>>的特化 何时执行std::cin >> c;

2 个答案:

答案 0 :(得分:2)

operator>>也实现为non-member functions

  

istream的&安培;运营商GT;&GT; (istream&amp; is,char&amp; c)

答案 1 :(得分:1)

如上所述hereoperator>>也是以cn的非成员函数实现的。

非会员职能:

istream& operator>>( istream& st, char& ch );

§27.7.2.2.3一节中明确规定了标准:

  

27.7.2.2.3 basic_istream :: operator&gt;&gt; [istream的::提取

     

11 / 返回: in。

    template<class charT, class traits> basic_istream<charT,traits>& operator>>
        (basic_istream<charT,traits>& in, charT& c);

    template<class traits> basic_istream<char,traits>& operator>>
        (basic_istream<char,traits>& in, unsigned char& c);

    template<class traits> basic_istream<char,traits>& operator>>
        (basic_istream<char,traits>& in, signed char& c);