第十三周实验报告4(纯虚函数--抽象类)

来源:互联网 发布:江苏昆山华道数据 编辑:程序博客网 时间:2024/05/29 18:40

程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:         纯虚函数

* 作    者:     王智凯                       
* 完成日期:  2012年   5月14日
* 版 本 号:  凯子微笑

 

 

//【任务4】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。//设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。//在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。#include <iostream>using namespace std;double pi = 3.14;//define pi = 3.14;
//CSolidclass CSolid{public:virtual float area() = 0;virtual void show()  =0;virtual float volume() = 0;};//CCubeclass CCube:public CSolid{public:CCube(float a1):a(a1){} float area() ; float volume()  ;void show();protected:float a;};float CCube::area() {return a*a*6;}float CCube::volume() {return a*a*a;}void CCube::show(){cout<<"正方体的边长是:"<<a<<endl;}//CBallclass CBall:public CSolid{public:CBall(float r1):r(r1){}    float area()  ;float volume()  ;void show();protected:float r;};float CBall::area()  {return pi*4*r*r;}float CBall::volume()  {return (4/3)*pi*r*r*r;}void CBall::show(){cout<<"圆的半径是:"<<r<<endl;}//CCylinderclass CCylinder:public CSolid{public:CCylinder(float r2,float h1):ra(r2),h(h1){}    float area()  ;float volume()  ;void show();protected:float ra;float h;};float CCylinder::area(){return pi*ra*ra+2*pi*ra*h;}float CCylinder::volume() {return pi*ra*ra*h;}void CCylinder::show(){cout<<"圆柱体的高是:"<<h<<endl;cout<<"圆柱体的底面半径是:"<<ra<<endl;}//main函数void main(){CSolid *p;CCube c1(3.5);CBall c2(4.5);CCylinder c3(3,5);p = &c1; p->show();cout << "正方体的体积:" << p->volume() << endl;cout << "正方体的表面积:" << p->area() << endl << endl;p = &c2;p->show();cout << "球的体积:" << p->area() << endl << endl;p = &c3;p->show();cout << "圆柱的体积:" << p->area() << endl;cout << "圆柱的体积:" << p->volume() << endl;system("pause");}


 

 

上机感言:通过前边3个函数的对比,对纯虚函数有了更深的了解。

  定义纯虚函数时main函数挺难写的。。。。。。

原创粉丝点击