cout<<5<<"this"
本質は、
cout.operator<<(5) . operator<<("this")
operator <<()を2回続けて使用することです。つまり、前の部分はcout&を返します。ostream
クラスはずっと前に記述されているため、メンバー関数として記述することは不可能であり、フレンド関数またはグローバル関数として記述されます。
#include<iostream>
#include<string>
using namespace std;
class T
{
private:
int age;
string name;
public:
T(int n=0,string str="no"):age(n),name(str){
}
friend ostream& operator<<(ostream& os,const T& t)
{
os<<t.name<<" is "<<t.age<<" years old"<<endl;
return os;
}
friend istream& operator>>(istream& is,T& t)
{
is>>t.name;
is>>t.age;
return is;
}
} ;
int main()
{
T t1(20,"Jeff"),t2(19,"Fuck");
cout<<t1<<t2;
cin>>t2;
cout<<t2;
}
<<オーバーロード演算子はクラスオブジェクトを変更しないため、定数パラメーターを使用してクラスオブジェクトを表します。
/ >>オーバーロードされた演算子はクラスオブジェクトを変更する必要があるため、constは使用できません