2. 写一个基类Shape,再写两个派生类:rect,circle,要求基类和派生类除了有各自的构造函数以外,还有求面积的成员函数。主函数中定义不同的派生类对象,求不同对象的面积。
时间: 2024-06-11 21:06:57 浏览: 100
以下是一个例子:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
Shape() {}
virtual ~Shape() {}
virtual double getArea() = 0; // 纯虚函数,要求派生类必须实现
};
class Rect : public Shape {
public:
Rect(double w, double h) : width(w), height(h) {}
double getArea() {
return width * height;
}
private:
double width;
double height;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
private:
double radius;
};
int main() {
Rect rect(4, 6);
Circle circle(5);
cout << "矩形的面积是:" << rect.getArea() << endl;
cout << "圆形的面积是:" << circle.getArea() << endl;
return 0;
}
```
这个例子中,Shape是一个抽象基类,只提供了一个纯虚函数getArea(),要求派生类必须实现。Rect和Circle都是Shape的派生类,实现了自己的构造函数和getArea()函数。在主函数中,我们定义了一个Rect对象和一个Circle对象,分别调用它们的getArea()函数求面积,并输出结果。注意到getArea()函数是虚函数,因此可以通过指针或引用动态绑定到正确的派生类函数,实现多态性。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.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)
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)