第10周项目4-3类族的设计

来源:互联网 发布:ios刷机用什么软件 编辑:程序博客网 时间:2024/06/10 02:40
编号及代码:/**Copyright(c)2015,烟台大学计算机与工程学院*All rights reserved;*文件名称:score.cpp*作者:范星月*完成日期:2015年5月20日*版本号:v1.0**问题描述:在以Circle为直接基类,派生出一个Cylinder类,再增加数据成员h*问题输入:无*问题输出:*/#include <iostream>using namespace std;class Point{public:    Point () {};    Point (double xx=0,double yy=0):x(xx),y(yy) {};    void setPoint(double,double);    double getX()    {        return x;    }    double getY()    {        return y;    }    friend ostream&operator<<(ostream&output,Point &p);protected:    double x,y;};void Point ::setPoint(double xx,double yy){    x=xx;    y=yy;}ostream&operator<<(ostream&output,Point &p){    output<<"("<<p.x<<","<<p.y<<")"<<endl;    return output;}class Circle:public Point{public:    Circle(double xx,double yy,double rr):Point(xx,yy),radius(rr) {};    void setRadius(double);    double getRadius();    double area();    friend ostream&operator<<(ostream&output,Circle &c);protected:    double radius;};void Circle::setRadius(double rr){    radius=rr;}double Circle::getRadius(){    return radius;}ostream&operator<<(ostream&output,Circle &c){    output<<"圆心为("<<c.x<<","<<c.y<<"),半径为"<<c.radius<<",area="<<c.area()<<endl;    return output;}double Circle::area(){    return 3.14*radius*radius;}class Cylinder:public Circle{public:    Cylinder(double xx,double yy,double rr,double hh):Circle(xx,yy,rr),height(hh){}    void setHeight(double hh)    {        height=hh;    }    double getHeight()    {        return height;    }    double area();    double volume();    friend ostream&operator<<(ostream&,Cylinder &c);protected:    double height;};double Cylinder::area(){    return 2*Circle::area()+2*3.14*radius*height;}double Cylinder::volume(){    return Circle::area()*height;} ostream&operator<<(ostream&output,Cylinder &C) {     output<<"圆心为("<<C.x<<","<<C.y<<"),半径为"<<C.radius<<"高度为"<<C.height<<endl;     output<<"面积为"<<C.area()<<"体积为"<<C.volume()<<endl;     return output; }int main(){    Cylinder c(1,1,1,1);    cout<<"原始圆柱;x="<<c.getX()<<" y="<<c.getY()<<" r="<<c.getRadius()<<" h="<<c.getHeight()<<" area="<<c.area()<<" volume="<<c.volume()<<endl;    c.setRadius(2);    cout<<"现在圆柱;x="<<c.getX()<<" y="<<c.getY()<<" r="<<c.getRadius()<<" h="<<c.getHeight()<<" area="<<c.area()<<" volume="<<c.volume()<<endl;    c.setPoint(2,2);    cout<<"现在圆柱;x="<<c.getX()<<" y="<<c.getY()<<" r="<<c.getRadius()<<" h="<<c.getHeight()<<" area="<<c.area()<<" volume="<<c.volume()<<endl;    return 0;}


学习总结:

若派生类需要基类的数据成员与成员函数,一般将数据成员设定为Protected,将成员函数设定为Public

0 0