设计三个类:几何形状类( Shape)、圆类(Circle) 、矩形类(Rectangle) ,要求: ●Shape类具有用来计算面积的公有成员函数getArea; ●Circle.以及Rectangle两类都丛Shape类公有派生,Circle类 的保护成员为半径( radius),Rectangle类的保护成员为长(length) 和宽(width) ; ●实现Circle类和Rectangle类的拷贝构造函数、带参构造函数、析构函数;给出具体的Circle和Rectangle类的计算面积函数getArea; D 在main()函数中输出半径为5的圆对象,以及长度为3、宽度为4的矩形对象的面积。c++实现
时间: 2024-03-07 14:47:22 浏览: 278
以下是 C++ 实现的代码示例:
```cpp
#include <iostream>
using namespace std;
// 几何形状类
class Shape {
public:
virtual double getArea() = 0; // 计算面积的虚函数
};
// 圆类
class Circle : public Shape {
protected:
double radius; // 半径
public:
Circle() : radius(0) {} // 默认构造函数
Circle(double r) : radius(r) {} // 带参构造函数
Circle(const Circle& c) : radius(c.radius) {} // 拷贝构造函数
~Circle() {} // 析构函数
double getArea() { // 计算圆面积的函数
return 3.14 * radius * radius;
}
};
// 矩形类
class Rectangle : public Shape {
protected:
double length; // 长度
double width; // 宽度
public:
Rectangle() : length(0), width(0) {} // 默认构造函数
Rectangle(double l, double w) : length(l), width(w) {} // 带参构造函数
Rectangle(const Rectangle& r) : length(r.length), width(r.width) {} // 拷贝构造函数
~Rectangle() {} // 析构函数
double getArea() { // 计算矩形面积的函数
return length * width;
}
};
int main() {
Circle c(5); // 创建半径为5的圆对象
Rectangle r(3, 4); // 创建长度为3、宽度为4的矩形对象
cout << "Circle area: " << c.getArea() << endl; // 输出圆的面积
cout << "Rectangle area: " << r.getArea() << endl; // 输出矩形的面积
return 0;
}
```
在上面的示例代码中,我们定义了一个几何形状类 `Shape`,其中包含一个纯虚函数 `getArea()`,用于计算几何形状的面积。圆类 `Circle` 和矩形类 `Rectangle` 都是从 `Shape` 类公有派生的,它们都实现了 `getArea()` 函数,并且分别包含了各自的保护成员变量。此外,我们还为 `Circle` 类和 `Rectangle` 类分别实现了拷贝构造函数、带参构造函数和析构函数。
在 `main()` 函数中,我们创建了一个半径为5的圆对象 `c` 和一个长度为3、宽度为4的矩形对象 `r`,并分别调用它们的 `getArea()` 函数计算面积并输出结果。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)