CPP学习之——重载输入运算符(18.21)

一 概述

学会了重载输出运算符<<,那么重载输入运算符>>,基本也就会学了,我们本节在重载输出运算符的基本上,稍作修改,进行重载输入运算符.

二 重载说明

重载输入运算符函数跟输出运算符函数的区别有三点:

  • 第一:输出运算符"<<"变为输入运算符">>"
  • 第二:由于cin是输入流istream类中的对象,因此我们要将ostream换成istream
  • 第三:由于是输入,要对传递进函数内的第2个参数进行修改,也就是cin操作的对象c.x所以第2个接受参数const A&c不应再定义为常量,要去掉const

三 示例演示及输出结果

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
using namespace std;
class A {
public:
A(int x){rx = x;}
friend ostream&operator<<(ostream&s,const A&a)
{
s<<a.rx;
return s;
}
friend istream&operator>>(istream&s,A&a)
{
s>>a.rx;
return s;
}
int operator++(){cout<<"++i\n";rx++;return rx;}
int operator++(int){cout<<"i++\n";int i=rx;rx++;return i;}
private:
int rx;
};

int main()
{
A a(3);
cin>>a;
cout<<a<<endl;
return 0;
}

3.2 输出结果

1
2
1
1