1./* 2. 3. 4.*Copyright (c) 2016,烟台大学计算机学院 5. 6.*All rights reserved. 7. 8.*文件名称:test.cpp 9. 10.*作者: 武聪 11. 12.*完成日期:2016年5月24日 13. 14.*版本号:v1.0 15.*问题描述:以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试。 16. *输入描述: 17.*程序输出: #include <iostream> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getX() const { return x; } double getY() const { return y; } void show(); protected: double x,y; }; Point::Point(double a,double b) { x=a; y=b; } void Point::setPoint(double a,double b) { x=a; y=b; } void Point::show() { cout<<x<<""<<y<<endl; } class Circle:public Point { public: Circle(double x=0,double y=0,double r=0); void setRadius(double); double getRadius() const; double area() const; void show(); protected: double radius; }; Circle::Circle(double a,double b,double r):Point(a,b),radius(r){}; void Circle::setRadius(double r) { radius=r; } double Circle::getRadius() const { return radius; } double Circle::area() const { return 3.14159*radius*radius; } void Circle::show() { cout<<x<<" "<<y<<" "<<radius<<" "<<area(); } class Cylinder:public Circle { public: Cylinder(double x=0,double y=0,double r=0,double h=0); void setHeight(double); double getHeight() const; double volume() const; double area() const; void show(); protected: double height; } ; Cylinder::Cylinder(double a,double b,double r,double h):Circle(a,b,r),height(h){}; void Cylinder::setHeight(double h) { height=h; } double Cylinder::getHeight() const { return height; } double Cylinder::volume() const { return Circle::area()*height; } double Cylinder::area( ) const { return 2*Circle::area( )+2*3.14159*radius*height; } void Cylinder::show() { cout<<x<<" "<<y<<" "<<height<<" "<<volume()<<" "<<area(); }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; }
运行结果:
- 知识点总结:
- 继承派生的使用
- 学习心得:
- 好好努力