第十三周实验报告(四)

来源:互联网 发布:淘宝爽快官方旗舰店 编辑:程序博客网 时间:2024/05/29 16:24

设计一个抽象类CSolid,含有两个表面积以及体积的纯虚函数。设计个派生类CCube,CBall,CCylinder。分别表示正方体球体以及圆柱体。在main函数中,定义基类的指针P(CSolid *p),利用p的指针输出球体以及圆柱体对象的表面积以及体积。

#include <iostream>#include <cmath>const double  pi = 3.1415926;using namespace std;class CSolid{      public:      virtual double area ()=0;      virtual double volume() =0;};class CCube:public CSolid{      private:              double length;      public :             virtual double area();             virtual double volume();             CCube(double length);             ~ CCube(){};};class CBall:public CSolid{      private:              double radius;      public :             virtual double area();             virtual double volume();             CBall(double radius);             ~CBall(){};};class CCylinder:public CSolid{      private:              double radius;              double height;      public :             virtual double area();             virtual double volume();             CCylinder(double radius,double height);              ~CCylinder(){};};double CCube::area(){       return pow(this->length,2)*6;}double CCube::volume(){       return pow(this->length,3);}CCube::CCube(double length){                    this -> length = length;} double CBall::area(){       return (4*pi*(pow(this->radius,2)));}double CBall::volume(){       return (4/3)*pi*(pow(this->radius,3));}CBall::CBall(double radius){                    this->radius = radius;}double CCylinder::area(){       return (pow(this->radius,2)*2*pi+2*pi*this->radius*this->height);}double CCylinder::volume(){       return pi*pow(this->radius,2)*this->height;}  CCylinder::CCylinder(double radius,double height){                            this -> radius = radius;                            this -> height = height;} int main()  {      CCube CCube1(12.6);    //建立CCube类对象c1,参数为正方体边长       CBall CBall1(4.5);       //建立CBall1类对象CBall1,参数为球的半径       CCylinder CCylinder1(4.5,8.4);    //建立CCylinder类对象CCylinder1,参数为圆柱体的半径和高       CSolid *p;     p=&CCube1;      cout<<"totol of CCube areas="<<p->area()<<endl;   //输出表面积       cout<<"totol of CCube volume="<<p->volume()<<endl;   //输出体积       p=&CBall1;     cout<<"totol of CBall areas="<<p->area()<<endl;   //输出表面积       cout<<"totol of CBall volume="<<p->volume()<<endl;   //输出体积       p=&CCylinder1;      cout<<"totol of CCylinder areas="<<p->area()<<endl;   //输出表面积       cout<<"totol of CCylinder volume="<<p->volume()<<endl;   //输出体积       delete p;    system("pause");      return 0;  }  


通过这几个任务,我对抽象基类函数的理解,抽象基类函数不作为实类只是作为一个纽带把它的派生类连接起来使用。

原创粉丝点击