1.设计一个图形类(Shape),由它派生出三角形类(Triangle)、正方形类(Square)、圆形类(Circle),利用虚函数计算图形面积,并在主函数中进行测试。
时间: 2023-11-22 17:56:58 浏览: 83
接口的应用Shape类,Rectangle、Triangle、Square
以下是C++的代码实现:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual float getArea() = 0; // 虚函数
};
class Triangle : public Shape {
private:
float base, height;
public:
Triangle(float b, float h) : base(b), height(h) {}
float getArea() {
return 0.5 * base * height;
}
};
class Square : public Shape {
private:
float side;
public:
Square(float s) : side(s) {}
float getArea() {
return side * side;
}
};
class Circle : public Shape {
private:
float radius;
public:
Circle(float r) : radius(r) {}
float getArea() {
return 3.14 * radius * radius;
}
};
int main() {
Shape* p;
Triangle t(4, 5);
Square s(3);
Circle c(2);
p = &t;
cout << "Triangle area: " << p->getArea() << endl;
p = &s;
cout << "Square area: " << p->getArea() << endl;
p = &c;
cout << "Circle area: " << p->getArea() << endl;
return 0;
}
```
输出结果为:
```
Triangle area: 10
Square area: 9
Circle area: 12.56
```
在上述代码中,我们定义了一个抽象基类 `Shape`,并且声明了一个纯虚函数 `getArea()`,这样就可以让派生类去重写这个函数实现自己的功能。
然后我们又定义了三个派生类 `Triangle`、`Square`、`Circle`,并且都重写了 `getArea()` 函数,分别实现了计算三角形、正方形、圆形的面积。
在主函数中,我们创建了三个对象,并且使用指针 `p` 指向这三个对象。通过指针调用 `getArea()` 函数,可以得到不同图形的面积。
阅读全文