第十三周任务四纯虚函数与继承

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:   第十三周任务四纯虚函数与继承                           
* 作    者:   石丽君                           
* 完成日期:       2012  年     5  月    14    日
* 版 本 号:          

  * 对任务及求解方法的描述部分
  * 输入描述: 设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。
  设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
  在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。
  
	
	  * 问题描述: 
	  * 程序输出: 
	  * 程序头部的注释结束
*/

#include <iostream>
#define pi 3.1415
using namespace std;
class CSolid
{
public:
	virtual double area() =0;
	virtual double volume() =0;
};
class CCube:public CSolid
{
public:
	virtual double area();
	virtual double volume();
	virtual double getl() {return longth;}
	double getw() {return wigth;}
	double  geth() {return higth;}
	CCube(double l,double w,double h):longth(l),wigth(w),higth(h) {}
private:
	double longth;
	double wigth;
	double higth;
};
double CCube::area()
{
	return 2*(longth*wigth*higth);
}
double CCube::volume()
{
	return longth*wigth*higth;
}
class CBall :public CSolid 
{
public:
	double area();
	double volume();
	virtual double getr() {return R;}
	CBall(double r):R(r) {}
private:
	double R;
	
};
double CBall::area()
{
	return 4*pi*R*R;
}
double CBall::volume()
{
	return (4/3*pi*R*R*R);
}
class CCylinder:public CSolid 
{
public:
	double area();
	double volume();
	virtual double getr() {return R;}
	virtual double geth() {return higth;}
	CCylinder(double r,double h):R(r),higth(h) {}
private:
	double R;
	double higth;
	
};
double CCylinder::area()
{
	return (2*pi*R*R+2*pi*R*higth);
}
double CCylinder::volume()
{
	return pi*R*R*higth;
}
int main()
{
	CSolid *p;
	CCube c1( 2,1,3);
	p=&c1;
	p->area();
	p->volume();
	cout<<"正方体的长"<<c1.getl()<<"宽"<<c1.getw()<<"高"<<c1.geth()<<endl;
	cout<<"正方体的面积"<<p->area()<<"体积为"<<p->volume()<<endl;
	CBall b(2.2);
	p=&b;
	cout<<"球体的半径为"<<b.getr()<<endl;
	cout<<"球体的面积"<<p->area()<<"体积为 "<<p->volume()<<endl;
	CCylinder y(3,2);
	p=&y;
	cout<<"圆柱体的半径"<<y.getr()<<"高为 "<<y.geth()<<endl;
	cout<<"圆柱体的面积"<<p->area()<<"体积为 "<<p->volume()<<endl;
	return 0;
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值