第十三周实验报告(四)
2012-05-15 18:00
225 查看
设计一个抽象类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; }
通过这几个任务,我对抽象基类函数的理解,抽象基类函数不作为实类只是作为一个纽带把它的派生类连接起来使用。
相关文章推荐
- 第十三周实验报告(三)
- 第十三周实验报告三
- 第十三周实验报告三
- C++程序设计实验报告(六十九)---第十三周任务一
- 第十三周实验报告1
- 第十三周实验报告4
- 第十三周实验报告1
- 第十三周实验报告(任务三)【抽象基类Shape】
- 第十三周实验报告四
- 第十三周实验报告3
- C++程序设计实验报告(七十)---第十三周任务二
- 第十三周实验报告(一)
- 第十三周实验报告(2)
- C++程序设计实验报告(七十一)---第十三周任务三
- 第十三周实验报告2
- 第十三周实验报告(四)设计抽象类CSolid含有两个求表面积和体积的虚函数
- 第十三周实验报告(四)
- 第十三周实验报告(一)
- C++程序设计实验报告(七十二)---第十三周任务四
- 第十三周实验报告1