马云香港采访视频2017:求一C++程序,要用上类和对象,构造函数,析构函数,继承与派生的知识编一个程序,谢谢!!

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 10:47:59
编一或两个程序,如果只一个程序,必须用上以上的知识,内容不限,谢谢!
要有注释说明,并写上程序的功能和作用

#include<iostream.h>
#include<math.h>
class Shape
{
public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
};
class TwoDimShape:public Shape
{
public:
void showData(){return ;};
double reArea(){return 0;};
double reVolume(){return 0;};
protected:
double Area;
double Volume;

};
class ThreeShape:public Shape
{
public:
void showData(){return ;};
double reArea(){return 0;};
double reVolume(){return 0;};
protected:
double Area;
double Volume;
};

class Circle:public TwoDimShape
{

public:
Circle(double r){showData(r);}
~Circle(){}
virtual void showData(double x){radiu=x;}
virtual double reArea(){return Area=3.14*radiu*radiu;}
virtual double reVolume(){return Volume=0;}
private:
double radiu;
};

class Ellipse:public TwoDimShape
{
public:
Ellipse(double r,double b){showData( r, b);}
~Ellipse(){}
void showData(double a,double b){Long=a,wild=b;}
double reArea(){return Area=2*Long*wild;}
private:
double Long;
double wild;

};
class Rectangle:public TwoDimShape
{
public:
Rectangle(double a,double b){showData(a,b);}
~Rectangle(){}
void showData(double a,double b){Long=a,wild=b;}
double reArea(){return Area=Long*wild;}
private:
double Long;
double wild;
};
class Triangle:public TwoDimShape
{
public:
Triangle(double l,double h){showData(l,h);}
~Triangle(){}
void showData(double l,double h){Long=l,heigh=h;}
double reArea();
private:
double Long;
double heigh;
};
class Ball:public ThreeShape
{
public:
Ball(double r){showData(r);}
~Ball(){}
virtual void showData(double r){radiu=r;}
virtual double reArea(){return Area=4*3.14*radiu*radiu;}
virtual double reVolume(){return Volume=(4/3)*3.14*radiu*radiu*radiu;}
private:
double radiu;
};
class Cylinder:public ThreeShape
{
public:
Cylinder(double r,double h){showData(r,h);}
~Cylinder(){}
virtual void showData(double r,double h){radiu=r,heigh=h;}
virtual double reArea(){return Area=2*3.14*radiu*radiu+2*3.14*radiu*heigh;}
virtual double reVolume(){return Volume=3.14*radiu*radiu*heigh;}
private:
double radiu;
double heigh;

};
class RectangularParallelepiped:public ThreeShape
{
public:
RectangularParallelepiped(double a,double b,double c)
{showData(a,b,c);}
~RectangularParallelepiped(){}
virtual void showData(double a,double b,double c) {al=a,bl=b,cl=c;}
virtual double reArea(){return Area=2*(al*bl+al*cl+bl*cl);}
virtual double reVolume(){return Volume=al*bl*cl;}
private:
double al,bl,cl;
};
void main() //计算圆,长方形等面积体积
{
double area=0,volume=0;
Shape *pet;
Circle a(2);//求圆,初始化半径,剩下的自己修改啦,呵呵
pet=&a;
area=pet->reArea();
cout<<area<<endl;
}
//希望对你有用啦