假设坐标采用二维平面坐标。 定义点类CPoint,包含属性x,y(整型)。方法有:带参构造函数,getX,getY分别返回点的x坐标,y坐标。 定义矩形类CRectangle,包含属性:矩形的左上角坐标leftPoint,右下角坐标rightPoint。类中方法有: 1)带参构造函数,初始化矩形的左上角、右下角 2)重载>运算符,参数为CPoint点对象,假设为p,若p在矩形内,返回true,否则返回false。 3)重载>运算符,第一个矩形若包含第二个矩形(部分边界可以相等),返回true,否则返回false。(要求该函数调用2)实现) 4)重载==运算符,判断两个矩形是否一致,返回true或false。 5)重载*运算符,判断两个矩形是否有重叠部分,返回true或false。 6)重载类型转换运算符,计算矩形的面积并返回,面积是整型。
时间: 2024-03-18 16:41:26 浏览: 99
下面是CPoint类和CRectangle类的实现:
```c++
class CPoint {
public:
CPoint(int _x, int _y) : x(_x), y(_y) {}
int getX() const { return x; }
int getY() const { return y; }
private:
int x, y;
};
class CRectangle {
public:
CRectangle(const CPoint& _leftPoint, const CPoint& _rightPoint) : leftPoint(_leftPoint), rightPoint(_rightPoint) {}
bool operator>(const CPoint& p) const {
return p.getX() >= leftPoint.getX() && p.getX() <= rightPoint.getX() &&
p.getY() >= leftPoint.getY() && p.getY() <= rightPoint.getY();
}
bool operator>(const CRectangle& rect) const {
return rect.leftPoint > leftPoint && rect.rightPoint < rightPoint;
}
bool operator==(const CRectangle& rect) const {
return leftPoint.getX() == rect.leftPoint.getX() && leftPoint.getY() == rect.leftPoint.getY() &&
rightPoint.getX() == rect.rightPoint.getX() && rightPoint.getY() == rect.rightPoint.getY();
}
bool operator*(const CRectangle& rect) const {
return rightPoint.getX() >= rect.leftPoint.getX() && leftPoint.getX() <= rect.rightPoint.getX() &&
rightPoint.getY() >= rect.leftPoint.getY() && leftPoint.getY() <= rect.rightPoint.getY();
}
operator int() const {
return (rightPoint.getX() - leftPoint.getX()) * (rightPoint.getY() - leftPoint.getY());
}
private:
CPoint leftPoint, rightPoint;
};
```
这里重载了>、==、*运算符,以及类型转换运算符,实现了对矩形的判定和计算。其中,>运算符重载实现了点是否在矩形内,第二个>运算符重载实现了一个矩形是否包含另一个矩形,==运算符重载实现了判断两个矩形是否相等,*运算符重载实现了判断两个矩形是否有重叠部分,类型转换运算符重载实现了计算矩形的面积。
阅读全文