第8单元 - 作业1:OJ编程 - 重载关系运算符
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
练习关系运算符重载
依照学术诚信条款,我保证此作业是本人独立完成的。
#include <iostream> #include <string> #include <sstream> using namespace std; class MyShape { protected: int R_, G_, B_; string colorToString() { stringstream ss; ss << R_ << " " << G_ << " " << B_; return ss.str(); } public: void setColor(int R, int G, int B) { R_ = R; G_ = G, B_ = B; } int getR() { return R_; } int getG() { return G_; } int getB() { return B_; } virtual void Draw() = 0; MyShape() { R_ = 255; G_ = 255, B_ = 255; } }; class MyCircle : public MyShape { private: int x_, y_, radius_; public: MyCircle(int x, int y, int radius) { x_ = x; y_ = y; radius_ = radius; } MyCircle() { x_ = y_ = 200; radius_ = 100; } MyCircle(MyCircle& aCircle) { x_ = aCircle.x_; y_ = aCircle.y_; radius_ = aCircle.radius_; R_ = aCircle.getR(); G_ = aCircle.getG(); B_ = aCircle.getB(); } void setCenter(int x, int y) { x_ = x; y_ = y; } void setRadius(int radius) { radius_ = radius; } void Draw() { } int getRadius(); //----在此处添加关系运算符 >、<、>=、<=、==、!= 的重载原型声明 bool operator>(MyCircle &secondMyCircle); bool operator<(MyCircle &secondMyCircle); bool operator>=(MyCircle &secondMyCircle); bool operator<=(MyCircle &secondMyCircle); bool operator==(MyCircle &secondMyCircle); bool operator!=(MyCircle &secondMyCircle); }; int MyCircle::getRadius() { return radius_; } //----在此处添加关系运算符的重载定义 bool MyCircle::operator>(MyCircle & secondMyCircle) { return (this->getRadius()) > (secondMyCircle.getRadius()); } bool MyCircle::operator<(MyCircle & secondMyCircle) { return (this->getRadius()) < (secondMyCircle.getRadius()); } bool MyCircle::operator>=(MyCircle & secondMyCircle) { return (this->getRadius()) >= (secondMyCircle.getRadius()); } bool MyCircle::operator<=(MyCircle & secondMyCircle) { return (this->getRadius()) <= (secondMyCircle.getRadius()); } bool MyCircle::operator==(MyCircle & secondMyCircle) { return (this->getRadius()) == (secondMyCircle.getRadius()); } bool MyCircle::operator!=(MyCircle & secondMyCircle) { return (this->getRadius()) != (secondMyCircle.getRadius()); } int main() { int r1, r2, r3 = 0; cin >> r1 >> r2 >> r3; MyCircle c1, c2, c3; c1.setRadius(r1); c2.setRadius(r2); c3.setRadius(r3); cout << (c1 > c2) << endl; cout << (c1 < c2) << endl; cout << (c2 >= c3) << endl; cout << (c2 <= c3) << endl; cout << (c1 == c3) << endl; cout << (c1 != c3) << endl; return 0; }