/*Copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称 :
*作 者 : 李钊
*完成日期 : 2016年5月31号
*版 本 号 : v1.0
*
*问题描述 : 立体类族共有的抽象类
*输入描述 :
*程序输出 : 各个立体图形的表面积与体积
*/
#include <iostream>
using namespace std;
class L
{
public:
virtual double barea() =0;
virtual double bv() =0;
};
class Zhengfangti:public L
{
public:
Zhengfangti(double a):bianchang(a){}
virtual double barea();
virtual double bv();
protected:
double bianchang;
};
double Zhengfangti::barea()
{
return 6*bianchang*bianchang;
}
double Zhengfangti::bv()
{
return bianchang*bianchang*bianchang;
}
class Qiu:public L
{
public:
Qiu(double r):banjing(r){}
virtual double barea();
virtual double bv();
protected:
double banjing;
};
double Qiu::barea()
{
return 4*3.14*banjing*banjing;
}
double Qiu::bv()
{
return 4/3*3.14*banjing*banjing*banjing;
}
class Yuanzhu:public L
{
public:
Yuanzhu(double dr,double h):dbanjing(dr),gao(h){}
virtual double barea();
virtual double bv();
protected:
double dbanjing;
double gao;
};
double Yuanzhu::barea()
{
return 2*3.14*dbanjing*gao+2*3.14*dbanjing*dbanjing;
}
double Yuanzhu::bv()
{
return 3.14*dbanjing*dbanjing*gao;
}
int main()
{
L *p;
double s,v;
Zhengfangti a1(3);
cout<<"正方体边长为 3 "<<endl;
p=&a1;
s=p->barea();
v=p->bv();
cout<<"正方体表面积为:"<<s<<endl;
cout<<"正方体体积为:"<<v<<endl;
Qiu a2(2);
cout<<"球半径为 2 "<<endl;
p=&a2;
s=p->barea();
v=p->bv();
cout<<"球表面积为:"<<s<<endl;
cout<<"球体积为:"<<v<<endl;
Yuanzhu a3(1,2);
cout<<"圆柱底半径为 1 ,高为 2 "<<endl;
p=&a3;
s=p->barea();
v=p->bv();
cout<<"圆柱体表面积为:"<<s<<endl;
cout<<"圆柱体体积为:"<<v<<endl;
return 0;
}
运行结果:
学习心得:
纯虚函数的运用
知识点总结:
略