cincout的重载
Posted shenyuling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cincout的重载相关的知识,希望对你有一定的参考价值。
一、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; }
以上是关于cincout的重载的主要内容,如果未能解决你的问题,请参考以下文章