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

程序头部注释开始
* 程序的版权和版本声明部分
* 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;
//CSolid
class CSolid
{
public:
	virtual float area() = 0;
	virtual void show()  =0;
	virtual float volume() = 0;
};

//CCube
class 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;
}

//CBall
class 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;
}

//CCylinder

class 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函数挺难写的。。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值