第十三周实验报告(四)
来源:互联网 发布:淘宝爽快官方旗舰店 编辑:程序博客网 时间: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; }
通过这几个任务,我对抽象基类函数的理解,抽象基类函数不作为实类只是作为一个纽带把它的派生类连接起来使用。
- 第十三周实验报告(四)
- 第十三周实验报告(四)
- 第十三周实验报告四
- 第十三周实验报告 任务四
- C++程序设计实验报告(七十二)---第十三周任务四
- 第十三周实验报告(一)
- 第十三周实验报告(二)
- 第十三周实验报告(三)
- 第十三周实验报告(2)
- 第十三周实验报告(任务一)
- 第十三周实验报告(任务二)
- 第十三周实验报告(任务三)
- 第十三周实验报告(一)
- 第十三周实验报告(1)
- 第十三周实验报告(一)
- 第十三周实验报告(三)
- 第十三周实验报告(2)
- 第十三周实验报告(3)
- 五种Spring事务的配置方式
- MongoDB最基本的操作
- ORACLE日期时间函数大全
- Iphone开发(五)用滑块slider来调节控件透明度
- 如何识别字符编码
- 第十三周实验报告(四)
- 第十三周任务(1)
- linux usb鼠标(1)
- JS获取input file绝对路径问题
- mysql ERROR 1045 (28000): Access denied for user
- SSH2框架Hibernate一些配置
- linux usb 鼠标(2)
- ASP.NET报错——Master Page frameworkName: Value cannot be null error
- C# winfrom中在一个主窗口包含子窗口