一、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; }