实现四个类正方形 square, 长方形 rectangle, 菱形 diamond, 和平行四边形 rhomboid,实现各自构造函数,计算边长函数和计算体积函数。注意需要使用多 重继承实现,并且不能有二义性。
时间: 2024-03-14 09:47:52 浏览: 15
以下是使用多重继承实现的四个类:
```cpp
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
};
class Rectangle : virtual public Shape {
protected:
double length;
double width;
public:
Rectangle(double _length, double _width) : length(_length), width(_width) {}
double getLength() { return length; }
double getWidth() { return width; }
double getArea() override { return length * width; }
};
class Square : public Rectangle {
public:
Square(double _side) : Rectangle(_side, _side) {}
};
class Rhomboid : virtual public Shape {
protected:
double base;
double height;
public:
Rhomboid(double _base, double _height) : base(_base), height(_height) {}
double getBase() { return base; }
double getHeight() { return height; }
double getArea() override { return base * height; }
};
class Diamond : public Rectangle, public Rhomboid {
public:
Diamond(double _diagonal1, double _diagonal2) : Rectangle(_diagonal1, _diagonal2), Rhomboid(_diagonal1 / 2, _diagonal2 / 2) {}
};
int main() {
Square s(5);
cout << "Square area: " << s.getArea() << endl;
Rectangle r(4, 6);
cout << "Rectangle area: " << r.getArea() << endl;
Rhomboid rh(3, 5);
cout << "Rhomboid area: " << rh.getArea() << endl;
Diamond d(4, 6);
cout << "Diamond area: " << d.getArea() << endl;
return 0;
}
```
其中,`Shape` 类是一个抽象类,定义了纯虚函数 `getArea()`,用于计算形状的面积。`Rectangle` 类和 `Rhomboid` 类分别表示长方形和菱形,它们都继承了 `Shape` 类,并实现了 `getArea()` 函数。`Square` 类和 `Diamond` 类分别表示正方形和平行四边形,它们通过多重继承同时继承了 `Rectangle` 和 `Rhomboid`,并实现了各自的构造函数、计算边长函数和计算体积函数。在 `main()` 函数中,创建了各种形状的对象,并调用了它们的 `getArea()` 函数计算面积。
阅读全文