写一个程序,定义抽象基类Shape,由它派生出2个派生类: Circle(圆形)、Rectangle(矩形),用一个函数printArea()分别输出以上二者的面积,2个图形的数据在定义对象时给定。
时间: 2024-03-15 19:46:26 浏览: 120
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
以下是一个实现上述要求的程序:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double getArea() {
return 3.14 * radius * radius;
}
private:
double radius;
};
class Rectangle : public Shape {
public:
Rectangle(double l, double w) : length(l), width(w) {}
double getArea() {
return length * width;
}
private:
double length, width;
};
void printArea(Shape *s) {
cout << "The area is " << s->getArea() << endl;
}
int main() {
Circle c(2);
Rectangle r(3, 4);
printArea(&c);
printArea(&r);
return 0;
}
```
在这个程序中,我们定义了一个抽象基类Shape,该类包含一个纯虚函数getArea()。然后我们分别定义了两个派生类Circle和Rectangle,这两个类都实现了getArea()函数,分别计算圆形和矩形的面积。最后我们定义了一个printArea()函数,该函数接受一个指向Shape对象的指针,调用该对象的getArea()函数来输出面积。在main函数中,我们分别建立了一个Circle对象和一个Rectangle对象,并调用printArea()函数来输出它们的面积。
阅读全文