c++两个类派生一个形状类
时间: 2023-12-14 08:58:35 浏览: 70
可以这样实现:
```c++
class Shape {
public:
virtual double area() = 0;
};
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() override { return width * height; }
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() override { return 3.1415926 * radius * radius; }
};
class ShapeFactory {
public:
static Shape* createRectangle(double w, double h) {
return new Rectangle(w, h);
}
static Shape* createCircle(double r) {
return new Circle(r);
}
};
```
这个例子中,Shape 是一个抽象基类,定义了一个纯虚函数 area(),表示形状的面积。Rectangle 和 Circle 分别继承自 Shape,并实现了 area() 函数。ShapeFactory 是一个工厂类,提供了创建不同形状的方法。可以通过 ShapeFactory::createRectangle() 和 ShapeFactory::createCircle() 创建不同的形状对象。
阅读全文