C++ 定义一个抽象类 CShape,再利用 CShape 类分别定义两 个派生类 CRectangle(表示矩形)和 CCircle(表示圆)。 3 个类都有计算对象面积的成员函数 GetArea()和计算对象周 长的成员函数 GetPerimeter(),在主函数中声明基类指针和 派生类对象,并通过基类指针调用不同对象的计算面积和周长的 成员函数
时间: 2024-03-13 07:42:51 浏览: 190
好的,以下是 C++ 的代码实现:
```cpp
#include <iostream>
using namespace std;
class CShape {
public:
// 纯虚函数,表示该类是一个抽象类
virtual double GetArea() = 0;
virtual double GetPerimeter() = 0;
};
class CRectangle : public CShape {
private:
double width, height;
public:
CRectangle(double w, double h) : width(w), height(h) {}
double GetArea() { return width * height; }
double GetPerimeter() { return 2 * (width + height); }
};
class CCircle : public CShape {
private:
double radius;
public:
CCircle(double r) : radius(r) {}
double GetArea() { return 3.14159 * radius * radius; }
double GetPerimeter() { return 2 * 3.14159 * radius; }
};
int main() {
CRectangle rect(3, 4);
CCircle circle(5);
CShape* pShape = ▭
cout << "Rectangle area: " << pShape->GetArea() << endl;
cout << "Rectangle perimeter: " << pShape->GetPerimeter() << endl;
pShape = &circle;
cout << "Circle area: " << pShape->GetArea() << endl;
cout << "Circle perimeter: " << pShape->GetPerimeter() << endl;
return 0;
}
```
运行结果:
```
Rectangle area: 12
Rectangle perimeter: 14
Circle area: 78.5398
Circle perimeter: 31.4159
```
阅读全文