抽象基类纯虚函数的实例化

设计一个抽象基类Figure

Figure里面包含两个纯虚函数分别用于计算图形的面积和体积:依据Figure派生出Cycle类(包含羊径等数据成员和成员函数(自行定义)),Triangle类(包含两条边等数据成员和成员函数(自行定义))、Square类(包含边长等数据成员和成员函数(自行定义))、cylinder类包含底面圆的半径、高等数据成员和成员函数(自行定叉)))
让我来瞧瞧
如有不当之处,请大佬指正,谢谢!
在这里插入图片描述

那我们现在就开始吧!

在这里插入图片描述
首先把纯虚函数写出来,注意=0;

#include <iostream>

using namespace std;
class Figure{
public:
    virtual void S(float a)const =0;
    virtual void S(float a,float b)const =0;
    virtual void V(float a)const =0;
    virtual void V(float a,float b)const =0;
    virtual ~Figure(){};
private:
    float a,b;
};


然后把继承类写出来,并实现函数,注意:基类里面此时用不到的函数也要实现;

//球;
class Cycle:public Figure{
public:
    void S(float a)const;
    void V(float a)const;
    virtual void S(float a,float b)const {};
    virtual void V(float a,float b)const {};
};
void Cycle::S(float a)const {cout<<"球的面积=" <<a*a*3.14*4<<endl;}
void Cycle::V(float a)const {cout<<"球的体积=" <<a*a*a*3.14*4/3<<endl;}

后面是剩下的几个形状的面积和体积;

//三角锥;
class Triangle:public Figure{
public:
    void S(float a)const;
    void V(float a)const;
    virtual void S(float a,float b)const {};
    virtual void V(float a,float b)const {};
private:
    float a;
};
void Triangle::S(float a)const {cout<<"正四面体的面积=" <<a*a*1.732<<endl;}
void Triangle::V(float a)const {cout<<"正四面体的体积=" <<a*a*a*1.414/12<<endl;}


//正方体;
class Square:public Figure{
public:
    void S(float a)const;
    void V(float a)const;
    virtual void S(float a,float b)const {};
    virtual void V(float a,float b)const {};
private:
    float a;
};
void Square::S(float a)const {cout<<"正方体的面积=" <<a*a*6<<endl;}
void Square::V(float a)const {cout<<"正方体的体积=" <<a*a*a<<endl;}

//圆柱;
class Cylinder:public Figure{
public:
    void S(float a,float b)const;
    void V(float a,float b)const;
    virtual void S(float a)const {};
    virtual void V(float a)const {};
private:
    float a,b;
};
void Cylinder::S(float a,float b)const {cout<<"圆柱的面积=" <<3.14*a*a*2+3.14*a*2*b<<endl;}
void Cylinder::V(float a,float b)const {cout<<"圆柱的体积=" <<3.14*b*a*a<<endl;}


最后写main函数,实现它!

int main()
{

    Cycle cyc;    cyc.S(2);     cyc.V(2);
    Triangle tr;  tr.S(2);      tr.V(2);
    Square sq;    sq.S(2);      sq.V(2);
    Cylinder cyl; cyl.S(2,2);   cyl.V(2,2);
    return 0;
}

完工!嘻在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值