当前位置: 代码迷 >> C++ >> 《C++ primer》疑点
  详细解决方案

《C++ primer》疑点

热度:3558   发布时间:2013-02-26 00:00:00.0
《C++ primer》疑问
   在讲到string对象的读写的时候,有这么一段话:
   
   输入与输出操作的行为与内置类型操作基本相似。尤其是,这些操作符返回左操作数作为运算结果。因此,我们可以把多
个读操作或多个写操作放在一起:
   

string s1,s2;
cin>>s1>>s2;      //read first input into s1,second into s2
cout<<s1<<s2<<endl;   //write both stringsC/C++


请问:这段话是啥意思?

   先谢谢了

------解决方案--------------------------------------------------------
因为ostream& operator << (ostream &os, const string &);

cout<<s1<<s2<<endl

等于

operator << (operator << (cout, s1), s2 );
------解决方案--------------------------------------------------------
ostream operator<<(ostream &,class T)
,这个函数返回的类型还是一个ostream类的对象。<<作为流操作时是一个二元操作符,其中ostream的对象作为左操作符,其他对象作为右操作符。由于<<函数返回的仍是一个ostream对象,因此可以连续输出。istream类似。
------解决方案--------------------------------------------------------
由于string类里面已经重载了<< >> 这两个操作符,
ostream& operator<< (const ostream& out)
关键在于返回值这里,返回的是一个ostream类的对象的引用。
因此cout << s1 << s2 << endl;
<=> (cout << s1)结果返回一个新的ostream对象的引用,然后这个引用就可以继续
输出s2,再返回一个引用,再输出endl,遇到分号,结束输出。
  相关解决方案