第13周项目4—立体类族共有的抽象类

来源:互联网 发布:优化员工队伍结构 编辑:程序博客网 时间:2024/06/05 05:10

*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights  reserved.
 *文件名称:main.cpp
  *作者:孙亚茹
*完成日期:2016年6月2日
*问题描述:定义抽象基类含有求表面积和体积的两个纯虚函数,定义指向基类的指针,利用这个指针求出各个派生类对象的表面积和体积。
*//

#include <iostream>using namespace std;class CSolid{public:    virtual int area()=0;    virtual int tiji()=0;};class CCube:public CSolid{private:    double a;public:    CCube(double a1=0.0):a(a1){};    int area();    int tiji();};int CCube::area(){    return a*a*6;}int CCube::tiji(){    return a*a*a;}class CBall:public CSolid{private:    double r;public:    CBall(double r1=0.0):r(r1){};    int area();    int tiji();};int CBall::area(){    return 3.14*r*r*6;}int CBall::tiji(){    return 3.14*r*r*r*4/3;}class CCylinder:public CSolid{private:    double r;    double h;public:    CCylinder(double r1=0.0,double h1=0.0):r(r1),h(h1){};    int area();    int tiji();};int CCylinder::area(){    return 3.14*r*r*2+3.14*2*r*h;}int CCylinder::tiji(){    return 3.14*r*r*h;}int main(){    CCube c1(4.0);    CBall b(4.0);    CCylinder c2(4.0,6.0);    CSolid *p[3]={&c1,&b,&c2};    double areas=0.0;    double tijis=0.0;    cout<<"正方体,球体,圆柱体对象的表面积分别是:"<<endl;    int i;    for(i=0;i<3;i++)    {        areas=areas+p[i]->area();        cout<<areas<<endl;    }    cout<<endl;    cout<<"正方体,球体,圆柱体对象的体积分别是:"<<endl;    for(i=0;i<3;i++)    {        tijis=tijis+p[i]->tiji();        cout<<tijis<<endl;    }}

总结:

        当多个基类的指针指向派生类多个对象时,可以声明为指针数组再利用循环,这样使程序更简单。

0 0
原创粉丝点击