定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求基类和各派生类具有以下特点: a.CLine类含有计算直线长度和斜率的成员函数; b.CCircle类含有计算圆面积的成员函数。
时间: 2023-06-16 19:03:10 浏览: 273
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
以下是基类CPoint的定义:
```C++
class CPoint {
protected:
double x, y;
public:
CPoint(double _x = 0, double _y = 0) : x(_x), y(_y) {}
void Set(double _x, double _y) { x = _x, y = _y; }
double GetX() const { return x; }
double GetY() const { return y; }
};
```
以下是直线CLine类的定义:
```C++
class CLine : public CPoint {
protected:
double len;
public:
CLine(double _x1, double _y1, double _x2, double _y2) : CPoint(_x1, _y1) {
len = sqrt((x - _x2) * (x - _x2) + (y - _y2) * (y - _y2));
}
double GetLen() const { return len; }
double GetSlope() const { return (x != 0) ? (y / x) : INFINITY; }
};
```
以下是圆CCircle类的定义:
```C++
class CCircle : public CPoint {
protected:
double r;
public:
CCircle(double _x, double _y, double _r) : CPoint(_x, _y), r(_r) {}
double GetArea() const { return M_PI * r * r; }
};
```
注意,这里使用了数学库中的常量M_PI,它表示圆周率π。
阅读全文