青 岛 理 工 大 学
课程实验报告
课程
名称
C++面向对象
程序设计
班级
网路091
实验日期
2011.5.19
姓名
崔萌萌
学号
200907201
实验成绩
实验名称
实验六:多态与虚函数
1、理解虚函数在类的继承层次中的作用及虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果
2、了解虚函数对多态的支持
3、理解静态多态性和动态多态性,学会使用虚函数的继承实现动态多态性
4、了解抽象类的概念
5、掌握虚函数和纯虚函数的概念
实验环境
Windows 7  VC6.0
实验
内容
编写一个程序,计算三角形、正方形和圆形的面积,并用相关的数据进行测试。附:用纯虚函数设置抽象基类
1、首先定义一个抽象类作为基类(virtual void Area()=0;//纯虚函数),以下均用此类作为接口。
2、分别定义Rectangle、Square、Circle类且均为公有继承,当使用虚函数时一定要将继承方式定为公有继承
3、分别定义虚函数的函数体否则派生类还是抽象类。据三种图形面积的求法,一次正确定义求其面积的公式(注意三角形用海伦公式)。
4、Main()函数中只能声明基类的指针或是引用,并据赋值兼容规则进行对象地址赋给基类指针,调用Show()函数.
抽象类不能实例化!
经过这次练习发现,以前编写程序没有头绪等问题均是没有好好看看课本的程序实例,编写程序并不是那样难!
在运用指针调用成员函数时掌握了赋值兼容规则
#include<iostream>
#include<math.h>
using namespace std;
const double PI=3.14159;
class Shape//抽象类
{  public:
      virtual void Area()=0;//纯虚函数
};
class Rectangle:public Shape //继承方式必须为public
{public:
      Rectangle(int a1,int b1,int c1)
      {a=a1;b=b1;c=c1;}
      virtual void Area()
      {
        p=(a+b+c)/2.0;
        s=sqrt(p*(p-a)*(p-b)*(p-c));//海伦公式求三角形面积
        cout<<"三角形面积为:"<<s<<endl;
      }
  private:
      int a,b,c;
      double p,s;
};
class Square:public Shape//正方形类
{public:
        Square(float myl)
        {l=myl;}
        virtual void Area()
        {
        s=l*l;
        cout<<"正方形面积为:"<<s<<endl;
        }
    private:
        float l;
        double s;
};
class Circle:public Shape//圆类
{public:
        Circle(float myr)
        {r=myr;}
        virtual void Area()
        {
          s=r*r*PI;
          cout<<"圆的面积为:"<<s<<endl;
        }
    private:
        float r;
        double s;
};
void Show(Shape *p)//基类指针p
抽象类的使用
{p->Area();}
void main()
{
Shape *p;//抽象类不能实例化但是可以定义指针或是引用
Rectangle Re(3,4,5);
p=ℜ//派生类对象地址赋给基类指针
Show(p);
Square Sq(3.5);
p=&Sq;
Show(p);
Circle C(3.0);
p=&C;
Show(p);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。