首页 > 应用开发 > > c++运算符+号重载
#include
using namespace std;
const float PI = 3.141593;
class Point
{
public:
Point(int xx = 0, int yy = 0) {
x = xx;
y = yy;
}
Point(Point &p);
int getX() {
return x;
}
int getY() {
return y;
}
~Point() {}
private:
int x, y;
};
class Circle :public Point {
public:
friend Circle operator+(const Circle& circle1,const Circle& circle2);
Circle(float r);
Circle();
float area();
//float operator+(Circle &c2) const;
~Circle() {}
private:
float radius;
};
Point::Point(Point &p) {
x = p.x;
y = p.y;
}
Circle::Circle(float r) {
radius = r;
}
Circle::Circle() {
}
float Circle::area() {
return PI * radius * radius;
}
/*float Circle::operator + (Circle &circle2) const {
return(PI * circle2.radius *circle2.radius + PI * radius * radius);
}*/
int main() {
float sum;
Point b(4, 5);
cout <
float radius;
cout << "Enter the radius of Circle:";
Circle circle1(3);
float area1 = circle1.area();
Circle circle2(4);
float area2 = circle2.area();
cout << "Circle1 area is" << area1 << endl;
cout << "Circle2 area is" << area2 << endl;
cout << "sum of area1 and area2 is\n" << area1 + area2 << endl;
sum = circle1+circle2;
float area;
//area = circle1 + circle2;
cout << "area = " << area << endl;
return 0;
}
Circle operator+(const Circle& circle1,const Circle& circle2)
{
return(circle1.radius * circle1.radius*PI+PI * circle2.radius * circle2.radius);
}
/*
/*float Circle::operator + (Circle &circle2) const {
return(PI * circle2.radius *circle2.radius + PI * radius * radius);
}*/用这种方式float area;
//area = circle1 + circle2;可以返回float的area
而现在没被注释掉的部分用friend Circle operator+(const Circle& circle1,const Circle& circle2);编译出现错误,
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2440 “=”: 无法从“Circle”转换为“float” Project7 该如何更改
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4605/viewspace-3170676/ ,如需转载,请注明出处,否则将追究法律责任。