3.请编写一个基类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数getArea()、计算对象周长的函数getPerim()。it main加上
时间: 2024-02-21 18:57:37 浏览: 20
好的,请看下面的代码实现:
```cpp
#include<iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,用于计算面积
virtual double getPerim() = 0; // 纯虚函数,用于计算周长
};
class Rectangle : public Shape {
private:
double length, width;
public:
Rectangle(double l, double w) {
length = l;
width = w;
}
double getArea() {
return length * width;
}
double getPerim() {
return 2 * (length + width);
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) {
radius = r;
}
double getArea() {
return 3.14 * radius * radius;
}
double getPerim() {
return 2 * 3.14 * radius;
}
};
int main() {
Shape* s1 = new Rectangle(3, 4); // 创建一个矩形对象
Shape* s2 = new Circle(5); // 创建一个圆形对象
cout << "矩形的面积:" << s1->getArea() << endl;
cout << "矩形的周长:" << s1->getPerim() << endl;
cout << "圆形的面积:" << s2->getArea() << endl;
cout << "圆形的周长:" << s2->getPerim() << endl;
delete s1;
delete s2;
return 0;
}
```
这里我们定义了一个基类Shape,其中包含两个纯虚函数getArea()和getPerim(),分别用于计算对象的面积和周长,这样可以保证派生类都必须实现这两个函数。
然后我们派生了两个类Rectangle和Circle,分别用于表示矩形和圆形。这两个类都实现了基类中的两个纯虚函数,分别计算了矩形和圆形的面积和周长。
在main函数中,我们分别创建了一个矩形对象和一个圆形对象,然后通过指向基类的指针调用了它们的getArea()和getPerim()函数,最后释放了指针所指向的内存。
执行结果如下:
```
矩形的面积:12
矩形的周长:14
圆形的面积:78.5
圆形的周长:31.4
```