G.运算符重载的练习3 | |||||
| |||||
Description | |||||
定义类Circle,实现Circle类的加法操作,用于实现一个Circle类对象a+r,生成一个新的Circle类对象b,新生成的对象b的横纵坐标值等于原对象a的坐标值,半径为a对象半径和r的和。重载"<<"和">>"用于实现Circle类对象的输入输出。 | |||||
Input | |||||
只有一组测试数据(均为浮点型),共1行。 依次为圆的半径,圆心横坐标,圆心纵坐标(用空格分隔) | |||||
Output | |||||
输出为2行,第一行输出圆的坐标,半径及面积信息,第二行输出经过加法运算后圆的坐标,半径及面积信息。 | |||||
Sample Input | |||||
4 7 8 | |||||
Sample Output | |||||
(7,8)4:50.24 (7,8)7:153.86 | |||||
Hint | |||||
PI的取值为3.14 主函数如下: int main(){ Circle c1; cin>>c1; cout<<c1; c1=c1+3; cout<<c1; } |
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
class Circle
{
public:
int r, x, y;
};
istream& operator>>(istream& cin, Circle& c)
{
cin >> c.r >> c.x >> c.y;
return cin;
}
ostream& operator<< (ostream& cout, Circle& c)
{
cout << '(' << c.x << ',' << c.y << ')' << c.r << ':' << 3.14 * c.r * c.r << endl;
return cout;
}
Circle operator+(Circle c, int a)
{
c.r += a;
return c;
}
int main()
{
Circle c1;
cin >> c1;
cout << c1;
c1 = c1 + 3;
cout << c1;
}