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的重载的主要内容,如果未能解决你的问题,请参考以下文章

导航架构片段重载问题

cincout

cincout输入输出控制

Java基础之方法的调用重载以及简单的递归

对Java方法方法重载的理解

OI技巧解决cincout因输入输出慢而TLE的问题