zoukankan      html  css  js  c++  java
  • c++抽象类和纯虚函数

    源程序:

    #include <iostream>
    using namespace std;
    //shape类中有纯虚函数,所以shape类是抽象类,抽象类定义的对象
    //也是抽象的,只能用指针对象,不能用普通对象,更不能用普通对象实例化
    class shape
    {
    public:
    virtual double area()=0; //抽象类中至少有一个纯虚函数
    virtual double area1() //虚函数必须要定义return 0;
    {
    return 0;
    }
    };

    class square:public shape //派生类为正方形
    {
    protected:
    double H;
    public:
    square(double l) //构造函数
    {
    H=l;
    }
    double area() //实例化基类的纯虚函数
    {
    return H*H;
    }
    };

    class circle:public square //派生类为圆
    {
    public:
    circle(double r):square(r)
    {}
    double area() //实例化基类中的纯虚函数area()
    {
    return 3.14159*H*H; //返回圆的面积
    }
    };

    class triangle:public square
    {
    protected:
    double W;
    public:
    triangle(double h,double w):square(h)
    {
    W=w; //构造函数的参数初始化保护形变量W
    }
    double area() //实例化纯虚函数area()
    {
    return H*W*0.5;
    }
    };

    class rectangle:public triangle //派生类是长方形
    {
    public:
    rectangle(double h,double w):triangle(h,w)
    {}
    double area() //实例化基类中的纯虚函数
    {
    return H*W;
    }
    };

    double total(shape *s[],int n) //求各图形面积之和
    {
    double sum=0.0;
    for(int i=0;i<n;i++)
    sum=sum+s[i]->area();
    return sum;
    }

    int main() //主函数
    {
    shape *s[4]; //定义对象指针数组,数组的每一个元素对应一个图形
    s[0]=new square(4);
    s[1]=new triangle(3,6);
    s[2]=new rectangle(3,6);
    s[3]=new circle(4); //以上4个图形
    for(int i=0;i<4;i++)
    {
    cout<<"s["<<i<<"]="<<s[i]->area()<<endl; //输出每个图形的面积
    }
    double sum=total(s,4); //计算4个图形面积之和
    cout<<"The total area is:"<<sum<<endl;
    return 1;
    }

     运行结果:

  • 相关阅读:
    排序算法之直接插入排序
    排序算法之快速排序
    进程内存空间
    python基础13 ---函数模块3(正则表达式)
    python基础12 ---函数模块2
    python基础11 ---函数模块1
    python基础10 ---匿名函数和递归
    python基础9 -----python内置函数2
    python基础8 -----迭代器和生成器
    python基础7 ---python函数
  • 原文地址:https://www.cnblogs.com/duanqibo/p/14128063.html
Copyright © 2011-2022 走看看