一、cin重載
1.cin為ostream類的成員
2.cin重載應為全局函數(畢竟ostream是別人寫好的)
3.代碼
a.核心代碼
ostream & operator<<(ostream &os,const A &a)//const A &a是為了避免復制函數的調用 ;ostream &o 相當於 cout { o<<a.x<<" "<<a.y;
return os; }//返回值設為ostream &是為了連續使用 <<
b.完整試例
#include<iostream> using namespace std; class A { int x; int y; public: A(int a=0,int b=0):x(a),y(b) {} friend ostream & operator<<(ostream & o,const A & a);//友元 }; ostream & operator<<(ostream &o,const A &a)//const A &a是為了避免復制函數的調用 ;ostream &o 相當於 cout { o<<a.x<<" "<<a.y; }//返回值設為ostream &是為了連續使用 << int main() { A a(1,2); cout<<a<<endl; }
二、cout重載
1.核心代碼
istream & operator>>(istream &is,A &a) { is>>a.x>>a.y; return is; }
2.完整試例
#include<iostream> using namespace std; class A { int x; int y; public: A(int a=0,int b=0):x(a),y(b) {} friend istream & operator>>(istream & is,A & a); friend ostream & operator<<(ostream & os,const A & a);//設置友元 是為了訪問私有成員x,y }; ostream & operator<<(ostream &os,const A &a) { os<<a.x<<" "<<a.y; return os; } istream & operator>>(istream &is,A &a) { is>>a.x>>a.y; return is; } int main() { A a; cin>>a; cout<<a<<endl; return 0; }