创建Shape类,在此类中拥有2个double类型私有成员x和y,设有virtual void show_area()=0纯虚函数和设置私有成员set_mem函数。Shape类拥有3个子类分别是Triangle,Square,Circle,在子类中实现面积。最后在主函数实现。
时间: 2024-03-24 21:36:12 浏览: 22
好的,我来为您解答这个问题。
以下是 Shape 类的定义:
```cpp
class Shape {
protected:
double x;
double y;
public:
Shape(double _x, double _y) : x(_x), y(_y) {}
virtual void show_area() = 0; // 纯虚函数
void set_mem(double _x, double _y) {
x = _x;
y = _y;
}
};
```
在 Shape 类中,我们定义了两个私有成员变量 x 和 y,并提供了一个构造函数和一个设置私有成员的函数 set_mem。同时,我们定义了一个纯虚函数 show_area(),这个函数在子类中需要实现。
以下是 Triangle 类的定义:
```cpp
class Triangle : public Shape {
public:
Triangle(double _x, double _y) : Shape(_x, _y) {}
void show_area() {
double area = x * y / 2.0;
cout << "三角形的面积为:" << area << endl;
}
};
```
Triangle 类继承自 Shape 类,并实现了 show_area() 函数。我们可以根据三角形的公式 S=1/2 * 底边 * 高,计算出三角形的面积,并输出到控制台中。
以下是 Square 类的定义:
```cpp
class Square : public Shape {
public:
Square(double _x, double _y) : Shape(_x, _y) {}
void show_area() {
double area = x * y;
cout << "正方形的面积为:" << area << endl;
}
};
```
Square 类同样继承自 Shape 类,并实现了 show_area() 函数。我们可以根据正方形的公式 S=边长 * 边长,计算出正方形的面积,并输出到控制台中。
以下是 Circle 类的定义:
```cpp
class Circle : public Shape {
public:
Circle(double _x, double _y) : Shape(_x, _y) {}
void show_area() {
double area = x * x * 3.1415926;
cout << "圆形的面积为:" << area << endl;
}
};
```
Circle 类同样继承自 Shape 类,并实现了 show_area() 函数。我们可以根据圆的公式 S=π * 半径的平方,计算出圆形的面积,并输出到控制台中。
最后,在主函数中,我们可以实例化这三个子类,并调用它们的 show_area() 函数,计算并输出它们的面积。例如:
```cpp
int main() {
Shape* p_shape;
Triangle triangle(3.0, 4.0);
Square square(5.0, 5.0);
Circle circle(2.0, 0.0);
p_shape = ▵
p_shape->show_area();
p_shape = □
p_shape->show_area();
p_shape = &circle;
p_shape->show_area();
return 0;
}
```
在上面的代码中,我们定义了一个指向 Shape 类的指针 p_shape,并将它依次指向三个子类的实例。然后,我们调用了每个子类的 show_area() 函数,输出它们的面积。
这就是创建 Shape 类和它的子类,并实现面积计算的方法。希望能对您有所帮助。