虚函数和多态_2

虚函数和多态_2

描述

由于球体和圆柱体都可以看做由圆继承而来,所以可以定义圆类Circle作为基类。在Circle类中定义一个数据成员radius和两个虚函数area()和volume()。由Circle类派生Sphere类和Column类。在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。

输入

球的半径
圆柱体的底面半径和高度

输出

球的表面积和体积
圆柱体的表面积和体积

样例输入

20
10 30

样例输出

s.area = 5024
s.volume= 33493.3
c.area = 2512
c.volume= 9420

代码

#include <iostream>
using namespace std;
const double pi = 3.14;
class Circle
{
	double radius;
public:
	Circle(double a);
	double getr();
	virtual void area()=0;
	virtual void volume()=0;
};
Circle::Circle(double a):radius(a){};
double Circle::getr(){return radius;}
class Sphere:public Circle
{
public:
	Sphere(double a);
	void area();
	void volume();
};
Sphere::Sphere(double a):Circle(a){}
void Sphere::area(){cout<<"s.area = "<<4*pi*getr()*getr()<<endl;}
void Sphere::volume(){cout<<"s.volume= "<<4.0/3*pi*getr()*getr()*getr()<<endl;}
class Column:public Circle
{
	double h;
public:
	Column(double a,double b);
	void area();
	void volume();
};
Column::Column(double a,double b):Circle(a),h(b){}
void Column::area(){cout<<"c.area = "<<2*pi*getr()*getr()+2*pi*getr()*h<<endl;}
void Column::volume(){cout<<"c.volume= "<<pi*getr()*getr()*h<<endl;}
int main()
{
	double a,b,c;
	cin >> a >> b >> c;
	Sphere A(a);
	Column B(b,c);
	Circle *p;
	p = &A; p->area(); p->volume();
	p = &B; p->area(); p->volume();
	return 0; 
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值