写一个面向对象的程序,定义抽象基类 Shape ,由它派生出1个类: Square (正方形),显示图形的面积。 要求:(1)抽象基类 Shape 的公有成员有纯虚函数 area ()。 (2) Square 类公有继承自 Shape 类,新增 double 型保护数据成员 side (边长),公有成员有构函数和求正方形面积的 area )函数,构造函数带一个参数用于定义对象时赋初值
时间: 2024-02-29 20:51:07 浏览: 23
好的,以下是您所需的程序:
```c++
#include <iostream>
using namespace std;
// 抽象基类 Shape
class Shape {
public:
virtual double area() = 0; // 纯虚函数 area
};
// 派生类 Square
class Square : public Shape {
protected:
double side; // 边长
public:
Square(double s) : side(s) {} // 构造函数
double area() { return side * side; } // 实现 area 函数
};
int main() {
Square s(5); // 创建 Square 对象
cout << "The area of the square is " << s.area() << endl; // 输出面积
return 0;
}
```
在这个程序中,我们定义了一个名为`Shape`的抽象基类,其中声明了一个纯虚函数`area()`。然后,我们定义了一个名为`Square`的派生类,它公有继承自`Shape`类,并新增了一个保护数据成员`side`,表示正方形的边长。`Square`类还有一个构造函数,用于初始化`side`成员变量。最后,我们在`Square`类中实现了`area()`函数,用于计算正方形的面积。
在`main`函数中,我们创建了一个`Square`对象`s`,并调用它的`area()`函数来计算正方形的面积。注意,由于`Shape`类中的`area()`函数是纯虚函数,我们必须在派生类中实现它。