学習の4週目:ストリームの挿入とストリームの抽出演算子のオーバーロード

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は使用できません
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/ZmJ6666/article/details/108570564