c++编程练习 016:惊呆!Point竟然能这样输入输出
程序员文章站
2024-03-17 18:45:52
...
北大程序设计与算法(三)
实现自vs2019
描述
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point() { };
// 在此处补充你的代码
};
int main()
{
Point p;
while(cin >> p) {
cout << p << endl;
}
return 0;
}
输入
多组数据,每组两个整数
输出
对每组数据,输出一行,就是输入的两个整数
样例输入
2 3
4 5
样例输出
2,3
4,5
来源
Guo Wei
实现
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point() { };
friend istream& operator>>(istream & is,Point & p) {
is >> p.x >> p.y;
return is;
}
friend ostream& operator<<(ostream & os,const Point & p) {
os << p.x << "," << p.y;
return os;
}
};
int main()
{
Point p;
while (cin >> p) {
cout << p << endl;
}
return 0;
}
要点
1.流插入和流提取运算符重载 即左移右移重载
2.采用了引用的方式进行参数传递,并且也返回了对象的引用,所以重载后的运算符可以实现连续输出。
3.在c++标准库中
输入输出的对象只能是 C++ 内置的数据类型
(例如 bool、int、double 等)和标准库所包含的类类型(例如 string、complex、ofstream、ifstream 等)。cout 是 ostream 类的对象,cin 是 istream类的对象。
必须以全局函数(友元函数)的形式重载<<和>>
否则就要修改标准库中的类。