2015年大一下第11周项目4-点、圆的关系(2)重载关系运算符

来源:互联网 发布:淘宝怎么举报卖家违规 编辑:程序博客网 时间:2024/05/16 09:22
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2015年5月20日*版本号:v1.0**问题描述:以Point为基类,派生出一个Circle(圆)类。*输入描述:无。*输出描述:比较两个圆的面积大小。*/#include <iostream>#include<cmath>using namespace std;class Circle;class Point{protected:    double x,y;public:    Point(double a,double b):x(a),y(b){}    friend ostream &operator<<(ostream & out,const Point &p);};ostream &operator<<(ostream & out,const Point &p){    cout<<"("<<p.x<<","<<p.y<<")";    return out;}class Circle:public Point{private:    double r;public:    Circle(double a,double b,double c):Point(a,b),r(c){}    double area();    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 ostream &operator<<(ostream & out,const Circle &c);};double Circle::area(){    return (3.1415*r*r);}bool Circle::operator>(Circle &c){    if(r-c.r>0)        return true;    else return false;}bool Circle::operator<(Circle &c){    if(r-c.r<0)        return true;    else return false;}bool Circle::operator==(Circle &c){    return !((*this>c)||(*this <c));}bool Circle::operator>=(Circle &c){    return !(*this <c);}bool Circle::operator<=(Circle &c){    return !((*this>c));}bool Circle::operator!=(Circle &c){    return !(*this==c);}ostream &operator<<(ostream & out,const Circle &c){    cout<<"圆心为:"<<"("<<c.x<<","<<c.y<<")"<<"半径为:"<<c.r;    return out;}int main( ){    Circle c1(3,2,4),c2(4,5,5);      //c2应该大于c1    cout<<"圆c1( "<<c1<<" )的面积是 "<<c1.area()<<endl;    cout<<"圆c2( "<<c2<<" )的面积是 "<<c2.area()<<endl;    cout<<"圆c1 ";    if(c1>c2) cout<<"大于, ";    if(c1<c2) cout<<"小于, ";    if(c1>=c2) cout<<"大于等于, ";    if(c1<=c2) cout<<"小于等于, ";    if(c1==c2) cout<<"等于, ";    if(c1!=c2) cout<<"不等于, ";    cout<<"圆c2"<<endl;    return 0;}


 

运行结果;

0 0
原创粉丝点击