给出下面的基类: class area_cl{ protected: double height; double width; public: area_cl(double r, double s) {height=r;width=s; } virtual double area () = 0; }; 要求: (1)建立基类area_cl 的两个派生类rectangle与isosceles,让每一个派生类都包含一个函数 area(),分别用来返回矩形与三角形的面积。用构造函数对height 与width 进行初始化。 (2)写出主程序,用来求height 与width 分别为10.0与5.0 的矩形面积,以及求height 与 width 分别为4.0与6.0的三角形面积。 (3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积
时间: 2024-02-03 12:03:48 浏览: 101
下面是代码实现:
```
#include <iostream>
using namespace std;
class area_cl{
protected:
double height;
double width;
public:
area_cl(double r, double s) {
height=r;
width=s;
}
virtual double area () = 0;
};
class rectangle:public area_cl{
public:
rectangle(double r, double s):area_cl(r,s){}
double area(){
return height*width;
}
};
class isosceles:public area_cl{
public:
isosceles(double r, double s):area_cl(r,s){}
double area(){
return height*width/2;
}
};
int main(){
area_cl *p;
rectangle r(10.0,5.0);
isosceles i(4.0,6.0);
p=&r;
cout<<"矩形面积:"<<p->area()<<endl;
p=&i;
cout<<"三角形面积:"<<p->area()<<endl;
return 0;
}
```
输出结果为:
```
矩形面积:50
三角形面积:12
```
在主程序中,我们定义了一个基类指针p,并通过p指向派生类对象,然后通过调用虚函数area(),实现了对矩形和三角形面积的求解。
阅读全文