问题及代码:
/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:吴胜男
*完成日期:2015年05月28日
*版本号:v1.0
*
*问题描述:(5)在圆类上重载关系运算符(6种),使之能够按圆的面积比较两个圆的大小。自编main函数完成测试。
*输入描述:
*程序输出:
*/
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
protected:
int x;
int y;
public:
Point(int a=0,int b=0):x(a),y(b){};
~Point(){};
double distance(const Point &p)const;
};
double Point::distance(const Point &p)const
{
double d;
d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
return d;
}
class Circle:public Point
{
private:
double r;//半径
public:
Circle(int a=0,int b=0,int l=0):Point(a,b),r(l){};
~Circle(){};
friend ostream &operator <<(ostream &output, const Circle &c);
bool operator > (Circle &c);
bool operator < (Circle &c);
bool operator >= (Circle &c);
bool operator <= (Circle &c);
bool operator == (Circle &c);
bool operator != (Circle &c);
friend void compare(Circle &c1,Circle &c2);
};
bool Circle::operator > (Circle &c)
{
if(r > c.r)
return true;
else
return false;
}
bool Circle::operator < (Circle &c)
{
if(r < c.r)
return true;
else
return false;
}
bool Circle::operator >= (Circle &c)
{
if(!(r < c.r))
return true;
else
return false;
}
bool Circle::operator <= (Circle &c)
{
if(!(r > c.r))
return true;
else
return false;
}
bool Circle::operator == (Circle &c)
{
if(r == c.r)
return true;
else
return false;
}
bool Circle::operator != (Circle &c)
{
if(!(r == c.r))
return true;
else
return false;
}
ostream &operator <<(ostream &output, const Circle &c)
{
output<<"\t圆心:"<<"("<<c.x<<","<<c.y<<")"<<"\t半径="<<c.r<<endl;
return output;
}
void compare(Circle &c1,Circle &c2)
{
if(c1<c2) cout<<" 小于";
if(c1>=c2) cout<<" 大于等于";
if(c1>c2) cout<<" 大于";
if(c1<=c2) cout<<" 小于等于";
if(c1==c2) cout<<" 等于";
if(c1!=c2) cout<<" 不等于";
}
int main( )
{
Circle c1(3,2,4),c2(3,2,5);
Circle c3(1,2,6),c4(4,5,6);
cout<<"圆c1: "<<c1;
cout<<"圆c2: "<<c2;
cout<<"圆c3: "<<c3;
cout<<"圆c4: "<<c4;
cout<<"c1";
compare(c1,c2);
cout<<"c2"<<endl;
cout<<"c3";
compare(c3,c4);
cout<<"c4"<<endl;
cout<<"c1";
compare(c1,c3);
cout<<"c3"<<endl;
cout<<"c2";
compare(c2,c4);
cout<<"c4"<<endl;
return 0;
}
运行结果:
知识点总结:运算符重载。
学习心得:做事开开心心的,用功吧。