class Circle { private: double rad; double area; ▁▁▁(3分) istream& operator>>(istream&in, Circle &cl); //重载>>为Circle类的友元函数 friend ▁▁▁(3分) operator<<(ostream&out, Circle &cl); //重载<<为Circle类的友元函数 public: Circle(double r=0) { rad=r; area=3.14r*r; } double ▁▁▁(3分)(Circle &cl)//重载减号 { return this->area-▁▁▁(3分);//返回两个圆的面积差 } }; istream& operator>>(istream&in, Circle &cl) { ▁▁▁(3分); //从输入流中提取数据给圆的半径 cl.area=3.14cl.rad*cl.rad; return in; } ostream& operator<<(ostream&out, Circle &cl) { out<<▁▁▁(5分); //输出圆的半径和面积,形如:rad=10 area=314 return out; } int main() { Circle c1,c2; cin>>c1>>c2; cout<<c1<<endl; cout<<c2<<endl; cout<<c2-c1<<endl; return 0; }
时间: 2024-03-25 13:36:21 浏览: 256
运算符重载:友元(friend)函数问题
在第 3 行处,应该声明一个友元函数 operator<<,用于重载输出运算符 <<,使其能够输出 Circle 类型的对象。
在第 12 行处,应该定义一个成员函数 getArea,用于计算圆的面积。
修改后的代码如下:
```
#include<iostream>
using namespace std;
class Circle {
private:
double rad;
double area;
friend istream& operator>>(istream&in, Circle &cl); //重载>>为Circle类的友元函数
friend ostream& operator<<(ostream&out, Circle &cl); //重载<<为Circle类的友元函数
public:
Circle(double r=0) {
rad=r;
area=3.14*r*r;
}
double getArea(Circle &cl) { //重载减号
return this->area-cl.area;//返回两个圆的面积差
}
};
istream& operator>>(istream&in, Circle &cl) {
in>>cl.rad; //从输入流中提取数据给圆的半径
cl.area=3.14*cl.rad*cl.rad;
return in;
}
ostream& operator<<(ostream&out, Circle &cl) {
out<<"rad="<<cl.rad<<" area="<<cl.area; //输出圆的半径和面积,形如:rad=10 area=314
return out;
}
int main() {
Circle c1,c2;
cin>>c1>>c2;
cout<<c1<<endl;
cout<<c2<<endl;
cout<<c2.getArea(c1)<<endl;
return 0;
}
```
阅读全文