4.shape类是一个表示形状的抽象类,其中area( )为求图形面积的公有纯虚函数,total( )则是一个通用的用来求两个形状(可以是两个三角形、两个矩形或者一个三角形一个矩形)的图形面积总和的普通函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),其成员变量均为私有,给出具体的求面积函数。并在主程序中,创建一个三角形类对象,一个矩形类对象,调用total函数计算两个对象的面积之和。
时间: 2024-02-11 07:06:08 浏览: 83
纯虚函数与抽象类的概念
以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double area() = 0; // 纯虚函数
};
class Triangle : public Shape {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double area() { return 0.5 * base * height; }
};
class Rectangle : public Shape {
private:
double length, width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double area() { return length * width; }
};
double total(Shape& s1, Shape& s2) {
return s1.area() + s2.area();
}
int main() {
Triangle t(3.0, 4.0);
Rectangle r(2.0, 5.0);
cout << "Total area: " << total(t, r) << endl;
return 0;
}
```
在上面的代码中,我们定义了一个抽象类 Shape,其中包含一个纯虚函数 area()。然后从 Shape 派生出 Triangle 和 Rectangle 类,并在这两个类中分别实现了求面积的函数。
最后,我们在主程序中创建了一个 Triangle 类对象 t 和一个 Rectangle 类对象 r,并通过调用 total() 函数计算了它们的面积之和。
阅读全文