cin、cout的過載
阿新 • • 發佈:2018-11-25
一、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; }