结合虚函数、继承思想,在基类Base中定义纯虚函数disp(),用来求面积。按照下面给出的部分代码设计派生类直角三角形、正方形和圆形三种图形求面积的方法disp()。 int main() { Base *p; Triangle t(20,20); // Triangle为直角三角形 Square s(20); Circle c(20); p=&t; p->disp(); p=&s; p->disp(); p=&c; p->disp(); } 运行结果为: 三角形面积:200 正方形面积:400 圆形面积:1256.64
时间: 2024-03-14 11:47:41 浏览: 73
好的,以下是代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 定义基类Base
class Base {
public:
virtual void disp() = 0; // 纯虚函数
};
// 派生出直角三角形类Triangle
class Triangle : public Base {
private:
double a, b;
public:
Triangle(double a, double b) : a(a), b(b) {}
void disp() {
cout << "三角形面积:" << a * b / 2 << endl;
}
};
// 派生出正方形类Square
class Square : public Base {
private:
double a;
public:
Square(double a) : a(a) {}
void disp() {
cout << "正方形面积:" << a * a << endl;
}
};
// 派生出圆形类Circle
class Circle : public Base {
private:
double r;
public:
Circle(double r) : r(r) {}
void disp() {
cout << "圆形面积:" << M_PI * r * r << endl;
}
};
int main() {
Base *p;
Triangle t(20,20);
Square s(20);
Circle c(20);
p = &t;
p->disp();
p = &s;
p->disp();
p = &c;
p->disp();
return 0;
}
```
运行结果:
```
三角形面积:200
正方形面积:400
圆形面积:1256.64
```
以上代码中,我们定义了一个基类Base,其中包含一个纯虚函数disp(),用来求面积。接着我们分别派生出直角三角形类Triangle、正方形类Square和圆形类Circle,并在每个派生类中实现求面积的方法disp()。最后我们在主函数中定义各类对象并通过指针调用disp()函数,这里体现了多态性。
阅读全文