创建Shape类,在此类中拥有2个double类型私有成员x和y,设有virtual void show_area()=0纯虚函数和设置私有成员set_mem函数。Shape类拥有3个子类分别是Triangle,Square,Circle,在子类中实现面积。最后在主函数实现。
时间: 2024-03-25 17:39:18 浏览: 34
表面积和体积_抽象类Shape_shape类继承_
好的,我来帮你解答这个问题。
首先,我们需要创建Shape类,如下所示:
```cpp
class Shape {
private:
double x;
double y;
public:
virtual void show_area() = 0;
void set_mem(double x, double y) {
this->x = x;
this->y = y;
}
};
```
在这个类中,我们定义了两个私有成员变量x和y,以及一个纯虚函数show_area()和一个设置私有成员的函数set_mem()。
然后,我们需要创建三个子类Triangle、Square和Circle,分别实现面积的计算,如下所示:
```cpp
class Triangle : public Shape {
public:
void show_area() override {
cout << "Triangle area: " << x * y / 2 << endl;
}
};
class Square : public Shape {
public:
void show_area() override {
cout << "Square area: " << x * y << endl;
}
};
class Circle : public Shape {
public:
void show_area() override {
cout << "Circle area: " << 3.14 * x * x << endl;
}
};
```
其中,我们使用了继承来实现对Shape类的扩展,并在子类中实现了计算面积的函数show_area()。
最后,在主函数中我们可以这样使用:
```cpp
int main() {
Shape *p;
Triangle t;
Square s;
Circle c;
p = &t;
p->set_mem(10, 5);
p->show_area();
p = &s;
p->set_mem(8, 8);
p->show_area();
p = &c;
p->set_mem(5, 0);
p->show_area();
return 0;
}
```
在这段代码中,我们创建了一个Shape类型的指针p,然后分别将它指向Triangle、Square和Circle类型的对象,然后调用set_mem()函数设置成员变量的值,并最终调用show_area()函数计算并输出面积。
希望这个例子能够帮助你理解如何实现这个问题。
阅读全文