码迷,mamicode.com
首页 > 其他好文 > 详细

cin、cout的重载

时间:2018-11-25 22:18:56      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:public   stream   main   避免   成员   ace   使用   std   完整   

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

 

cin、cout的重载

标签:public   stream   main   避免   成员   ace   使用   std   完整   

原文地址:https://www.cnblogs.com/shenyuling/p/10017485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!