实验内容:建立3个继承类container的派生类cube,sphere,cylinder,让每个派生类都包含虚函数surface-area()和volume(),分别计算正方体,球体,圆柱体的体积和表面积;应用c++的多态性
实验体会;error C2144: syntax error : missing ')' before type 'double'
cylinder(double h,double d):container( double d);应该把最后一个double去掉;
#include <iostream>
using namespace std;
class container{
protected:
double a;
public:
virtual double surface_area()=0;
virtual double volume()=0;
container(double a1)
{ a=a1;
}
};
class cube:public container{
public:
cube(double b):container(b)//
{ }
double surface_area()
{ return 6*a*a;
}
double volume()
{ return a*a*a;
}
};
class sphere:public container{
public:
sphere(double c):container( c)//
{ };
double surface_area()
{ return 4*3.1416*a*a;
}
double volume()
{ return 3.1416*a*a*a*4/3;
}
};
class cylinder:public container{
private:
double height;
public:
cylinder(double h,double d):container( d)//
{ height=h;
}
double surface_area()
{ return 2*3.1416*a*(a+height);
}
double volume()
{ return 3.1416*a*a*height;
}
};
int main()
{ container *p;
cube c(5.0);
sphere s(5.0);
cylinder cy(6.0,5.0);
p=&c;
cout<<"这个正方体的表面积和体积分别为: "<<p->surface_area()<<" "<<p->volume()<<endl;
p=&s;
cout<<"这个球体的表面积和体积分别为: "<<p->surface_area()<<" "<<p->volume()<<endl;
p=&cy;
cout<<"这个圆柱体的表面积和体积分别为: "<<p->surface_area()<<" "<<p->volume()<<endl;
return 0;
}