声明一个图形基类 Shape,在它的基础上派生出矩形类 Rectangle 和圆形类 Circle,它们都有计算面积和周长、输出图形信息等成员函数,再在 Rectangle 类的基础上派生出正方形类 Square。编写程序完成各类的定义和实现,以及类的使用。
时间: 2024-02-06 21:10:58 浏览: 114
声明一个图形基类并在它的基础上派生出其他类并编写程序实现各类的定义及实现
好的,根据您的要求,我来为您解答这道面向对象编程的问题。
首先,我们需要定义一个图形基类 Shape,它应该包含计算面积、周长和输出图形信息等成员函数,这样才能方便地派生出其他图形类。
```C++
class Shape {
public:
virtual double getArea() const = 0; // 计算面积
virtual double getPerimeter() const = 0; // 计算周长
virtual void printInfo() const = 0; // 输出图形信息
virtual ~Shape() {}
};
```
接下来,我们需要派生出矩形类 Rectangle 和圆形类 Circle,它们都应该继承自 Shape 类,并实现计算面积、周长和输出图形信息等成员函数。
```C++
class Rectangle : public Shape {
protected:
double width; // 宽
double height; // 高
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() const override { return width * height; } // 计算面积
double getPerimeter() const override { return 2 * (width + height); } // 计算周长
void printInfo() const override { // 输出图形信息
std::cout << "Rectangle: width=" << width << ", height=" << height << ", area=" << getArea() << ", perimeter=" << getPerimeter() << std::endl;
}
};
class Circle : public Shape {
protected:
double radius; // 半径
public:
Circle(double r) : radius(r) {}
double getArea() const override { return 3.1415926 * radius * radius; } // 计算面积
double getPerimeter() const override { return 2 * 3.1415926 * radius; } // 计算周长
void printInfo() const override { // 输出图形信息
std::cout << "Circle: radius=" << radius << ", area=" << getArea() << ", perimeter=" << getPerimeter() << std::endl;
}
};
```
最后,我们还需要在 Rectangle 类的基础上派生出正方形类 Square,它也应该继承自 Shape 类,并实现计算面积、周长和输出图形信息等成员函数。
```C++
class Square : public Rectangle {
public:
Square(double s) : Rectangle(s, s) {} // 正方形的宽和高相等
void printInfo() const override { // 输出图形信息
std::cout << "Square: side=" << width << ", area=" << getArea() << ", perimeter=" << getPerimeter() << std::endl;
}
};
```
现在,我们已经完成了各个图形类的定义和实现,下面是一个类的使用示例。
```C++
int main() {
Shape* shapes[] = { new Rectangle(3, 4), new Circle(5), new Square(2.5) };
for (auto shape : shapes) {
shape->printInfo();
delete shape;
}
return 0;
}
```
输出结果如下:
```
Rectangle: width=3, height=4, area=12, perimeter=14
Circle: radius=5, area=78.5398, perimeter=31.4159
Square: side=2.5, area=6.25, perimeter=10
```
以上就是本题的解答过程,希望能对您有所帮助。
阅读全文