练习1: Shape类中有2个纯虚函数:显示信息函数Show():求图形面积函数 area()。 在此抽象类的基础上派生出Rectangle(矩形)和Triangle(三角形)类, 这两个类都有area()函数计算面积,Show()函数显示信息。 在主函数中分别声明矩形类和三角形类的对象,定义基类指针,分别调 用show函数,在屏幕上输出对象的信息和面积信息
时间: 2024-03-01 12:52:26 浏览: 59
好的,这是一道关于面向对象编程的题目,我会尽力解答。
首先,我们需要定义一个抽象类 Shape,其中包含两个纯虚函数 Show() 和 area(),分别用于显示信息和计算面积。抽象类不能被实例化,只能被用于继承。
```c++
class Shape {
public:
virtual void Show() = 0;
virtual double area() = 0;
};
```
接下来,我们可以派生出 Rectangle(矩形)和 Triangle(三角形)两个类,它们都需要实现父类中的纯虚函数。
Rectangle 类需要定义长和宽两个成员变量,以及一个构造函数和两个函数分别用于计算面积和显示信息。
```c++
class Rectangle : public Shape {
public:
Rectangle(double l, double w) : length(l), width(w) {}
void Show() override {
std::cout << "This is a rectangle with length " << length << " and width " << width << std::endl;
}
double area() override {
return length * width;
}
private:
double length;
double width;
};
```
Triangle 类需要定义底和高两个成员变量,以及一个构造函数和两个函数分别用于计算面积和显示信息。
```c++
class Triangle : public Shape {
public:
Triangle(double b, double h) : base(b), height(h) {}
void Show() override {
std::cout << "This is a triangle with base " << base << " and height " << height << std::endl;
}
double area() override {
return base * height / 2;
}
private:
double base;
double height;
};
```
最后,在主函数中,我们可以声明一个矩形对象和一个三角形对象,并定义一个指向 Shape 类的指针。通过指针调用 Show() 和 area() 函数,输出对象的信息和面积信息。
```c++
int main() {
Rectangle rectangle(3, 4);
Triangle triangle(5, 6);
Shape* shape_ptr;
shape_ptr = &rectangle;
shape_ptr->Show();
std::cout << "The area of the rectangle is " << shape_ptr->area() << std::endl;
shape_ptr = ▵
shape_ptr->Show();
std::cout << "The area of the triangle is " << shape_ptr->area() << std::endl;
return 0;
}
```
输出结果如下:
```
This is a rectangle with length 3 and width 4
The area of the rectangle is 12
This is a triangle with base 5 and height 6
The area of the triangle is 15
```
希望我的回答能够对您有所帮助。
阅读全文