问题及代码:
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年5月4日 * 版本号:codeblock * * 问题描述: 点-圆-圆柱类族设计 * 输入描述: * 程序输出: 输出结果 */ #include<iostream> using namespace std; class Point { public: Point(double x=0,double y=0); double getX() { return x; } double getY() { return y; } void setPoint(double,double); void show(); protected: double x; double y; }; Point::Point(double x,double y) { this->x=x; this->y=y; } void Point::setPoint(double x,double y) { this->x=x; this->y=y; } void Point::show() { cout<<"该点坐标为"<<x<<","<<y<<endl; } class Circle:public Point { public: Circle(double a=0,double b=0,double r=0); void setRadius(double); void show(); double getRadius( ) const { return rd; } double area()const; protected: double rd; }; Circle::Circle(double a,double b,double r):Point(a,b),rd(r){} void Circle::setRadius(double r) { rd=r; } double Circle::area()const { return 3.14*rd*rd; } void Circle::show() { cout<<"圆的面积为的"<<area()<<endl; } class Cylinder:public Circle { public: Cylinder(double a=0,double b=0,double r=0,double he=0); void setHeight(double); double area()const; void show()const; double volume()const; double getH()const { return h; } private: double h; }; Cylinder::Cylinder(double a,double b,double r,double he):Circle(a,b,r),h(he){} double Cylinder::area()const { return 2*Circle::area()+2*3.14*rd*h; } void Cylinder::setHeight(double h) { this->h=h; } double Cylinder::volume()const { return 3.14*rd*rd*h; } void Cylinder::show()const { cout<<"圆柱体的面积为"<<area()<<endl; cout<<"圆柱的体积为"<<volume()<<endl; } int main() { Cylinder cy1(3.5,6.4,5.2,10); cout<<"\noriginal cylinder:\nx="; cy1.show(); cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout<<"\nnew cylinder:\n"; cy1.show(); return 0; }
学习心得:
通过本次练习我理解了派生类构造函数的意义及运用,能够熟练掌握派生类的运用