定义一个抽象类Shape,包含两个纯虚函数Area(计算面积)和SetShape(重设形状大小)。然后派生出三角形类Triangle,矩形Rect,圆Circle类,分别求面积
时间: 2024-10-27 10:14:06 浏览: 18
在面向对象编程中,你可以创建一个抽象类(如`Shape`),它包含一些共有的属性和行为,但其中的一些方法因为是纯粹的抽象(即没有实现)而被称为纯虚函数。例如:
```cpp
class Shape {
public:
virtual double Area() const = 0; // 纯虚函数,用于计算面积
virtual void SetShape(double newSize) = 0; // 纯虚函数,用于重设形状大小
protected:
// 共享的属性,比如形状类型等
std::string shapeType;
};
// 派生类的具体实现
class Triangle : public Shape {
private:
double base, height;
public:
Triangle(double base, double height) : base(base), height(height) {}
double Area() override { return 0.5 * base * height; }
void SetShape(double newSize) override {
base *= newSize;
height *= newSize;
}
};
class Rect : public Shape {
private:
double width, length;
public:
Rect(double width, double length) : width(width), length(length) {}
double Area() override { return width * length; }
void SetShape(double newSize) override {
width *= newSize;
length *= newSize;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double radius) : radius(radius) {}
double Area() override { return M_PI * pow(radius, 2); } // 使用π和pow()函数计算面积
void SetShape(double newSize) override {
radius *= newSize;
}
};
```
每个派生类(如`Triangle`, `Rect`, 和 `Circle`)都实现了它们自己的`Area()`方法来计算特定形状的面积,并重写了`SetShape()`方法以调整形状的尺寸。
阅读全文