第十三週項目三 立體類族共有的抽象類

項目要求

設計一個抽象類CSolid,含有用於求表面積及體積的兩個純虛函數。設計派生類CCube、CBall、CCylinder,分別表示正方體、球體及圓柱體。在main()函數中,定義CSolid *p;(p是指向基類的指針,且這個基類是個抽象類)。要求利用這個p指針,能夠求出正方體、球體及圓柱體對象的表面積及體積。


代碼如下


#include <iostream>
using namespace std;

class CSolid
    {
public:
    virtual double area()=0;
    virtual double  volume()=0;
    };

class CCube:public CSolid
    {
private:
    double length;
public:
    CCube(double l):length(l) {}
    double volume()
        {
        return length*length*length;
        }
    double area()
        {
        return length*length*6;
        }
    };

class CBall:public CSolid
    {
private:
    double radium;
public:
    CBall(double r):radium(r) {}
    double volume()
        {
        return radium*radium*radium*3.14*4.0/3;
        }
    double area()
        {
        return radium*radium*3.14*4;
        }
    };

class CCylinder:public CSolid
    {
private:
    double radium;
    double height;
public:
    CCylinder(double r,double h):radium(r),height(h) {}
    double volume()
        {
        return radium*radium*3.14*height;
        }
    double area()
        {
        return (radium*radium*3.14*2+radium*3.14*2*height);
        }
    };

int main()
    {
    CCube ccu(5);
    CBall cb(4.5);
    CCylinder ccy(2,6.5);
    CSolid *p;
    p=&ccu;
    cout<<"邊長爲5的正方體:"<<endl<<"體積:"<<p->volume()<<"\n面積:"<<p->area();
    p=&cb;
    cout<<"\n\n半徑爲4.5的球體:"<<endl<<"體積:"<<p->volume()<<"\n面積:"<<p->area();
    p=&ccy;
    cout<<"\n\n底面半徑爲2,高爲6.5的圓柱體:"<<endl<<"體積:"<<p->volume()<<"\n面積:"<<p->area();
    return 0;

    }


運行結果



學習心得

main函數中也可以修改爲:

int main()
    {
    CCube ccu(5);
    CBall cb(4.5);
    CCylinder ccy(2,6.5);
    CSolid *p[3]={&ccu,&cb,&ccy};
    cout<<"邊長爲5的正方體:"<<endl<<"體積:"<<p[0]->volume()<<"\n面積:"<<p[0]->area();
    cout<<"\n\n半徑爲4.5的球體:"<<endl<<"體積:"<<p[1]->volume()<<"\n面積:"<<p[1]->area();
    cout<<"\n\n底面半徑爲2,高爲6.5的圓柱體:"<<endl<<"體積:"<<p[2]->volume()<<"\n面積:"<<p[2]->area();
    return 0;
    }


發佈了227 篇原創文章 · 獲贊 26 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章