【6.12】要求:
(1)建立基类area_cl的两个派生类rectangle与isosceles,让每一个派生类都包含一个函数area(),分别用来返回矩形与三角形的面积。用构造函数对height与width进行初始化。
(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
(3)要求通过使用基类指针访问虚函数的方法(运行时的多态)分别求出矩形和三角形的面积。
- #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()
- {
- cout << "矩形的面积为:" << height*width << endl;
- return 0;
- }
- };
- class Isosceles :public Area_cl {
- public:
- Isosceles(double r, double s) :Area_cl(r, s)
- {};
- double area()
- {
- cout << "三角形的面积为:" << (height*width) / 2 << endl;
- return 0;
- }
- };
- int main()
- {
- Area_cl *p;
- Rectangle t(10.0, 5.0);
- Isosceles i(4.0, 6.0);
- p = &t;
- p->area();
- p = &i;
- p->area();
- system("pause");
- return 0;
- }
【6.13】定义基类Base,其数据成员为高h,定义成员函数disp为虚函数。然后再由Base派生出长方体类Cuboid与圆柱类Cylinder。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类与派生类中虚函数disp,显示长方体与圆柱体的体积。