创建Shape类,在此类中拥有2个double类型私有成员x和y,设有virtual void show_area()=0纯虚函数和设置私有成员set_mem函数。Shape类拥有3个子类分别是Triangle,Square,Circle,在子类中实现面积。最后在主函数实现。
时间: 2024-03-23 16:41:10 浏览: 112
设计一个Shape接口和它的两个实现类Square和Circle,要求如下
好的,我理解您的问题了。下面是相应的代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Shape{
protected:
double x, y;
public:
void set_mem(double a, double b){
x = a;
y = b;
}
virtual void show_area() = 0;
};
class Triangle : public Shape{
public:
void show_area(){
cout << "Triangle area: " << x * y / 2 << endl;
}
};
class Square : public Shape{
public:
void show_area(){
cout << "Square area: " << x * y << endl;
}
};
class Circle : public Shape{
public:
void show_area(){
cout << "Circle area: " << 3.14 * pow(x, 2) << endl;
}
};
int main(){
Shape* shape1 = new Triangle();
Shape* shape2 = new Square();
Shape* shape3 = new Circle();
shape1->set_mem(3, 4);
shape2->set_mem(5, 5);
shape3->set_mem(2, 0);
shape1->show_area();
shape2->show_area();
shape3->show_area();
delete shape1;
delete shape2;
delete shape3;
return 0;
}
```
在上面的代码中,我们定义了一个抽象类 `Shape`,其中包含两个私有成员变量 `x` 和 `y`,以及一个纯虚函数 `show_area()` 和一个公有成员函数 `set_mem()`。紧接着,我们又定义了三个派生类 `Triangle`、`Square` 和 `Circle`,它们分别继承了 `Shape` 类,并重写了 `show_area()` 函数,用于计算不同形状的面积。在主函数中,我们首先通过 `new` 运算符创建了三个不同的形状对象,并调用 `set_mem()` 函数设置它们的参数。然后,我们分别调用这三个对象的 `show_area()` 函数,输出其对应的面积。最后,我们又通过 `delete` 运算符释放了之前创建的对象,避免了内存泄漏。
希望这个代码能够帮助您解决问题,如果还有什么不明白的地方,欢迎随时问我。
阅读全文