读书人

一个新手的有关问题

发布时间: 2012-02-26 20:19:43 作者: rapoo

一个新手的问题!
碰上这样的一道问题:定义一个描述坐标位置的类location,由它派生出具有显示和移动功能的点类point, 再从point类派生出圆类circles,在circles类中将location类的数据成员作为圆的圆心, 可以求出圆的周长和面积。

刚学派生 有点难理解 望高手们帮忙解决下!

[解决办法]

C/C++ code
circle_header.h#ifndef CIRCLE_H#define CIRCLE_H#include <iostream>#include <math.h>using namespace std;#define PI 3.1416class Location{public:    Location(float xx=0, float yy=0){X=xx; Y=yy;}    float GetX(){return X;}    float GetY(){return Y;}    void  SetX(float xx){X = xx;}    void  SetY(float yy){Y = yy;}private:    float X;    float Y;};class Point:public Location{public:    void Move(float xx, float yy)    {        SetX(xx);         SetY(yy);    }    void Display()    {        cout<<"The location is " << "x=" << GetX() << "," << "y=" << GetY();    }private:    Location PointLocation;};class Circle:public Point{public:    Circle(Location &centre, Point &circlePoint)    {        CirclePoint = circlePoint;        Centre = centre;    }    float Girth()   //周长    {        return 2*PI*Radius();    }    float Acreage()  //面积    {        return PI*Radius()*Radius();    }private:    Location Centre;    //圆心    Point CirclePoint;  //圆周上的点    float Radius()      //半径    {        return sqrt( (CirclePoint.GetX()-Centre.GetX())*(CirclePoint.GetX()-Centre.GetX())+                     (CirclePoint.GetY()-Centre.GetY())*(CirclePoint.GetY()-Centre.GetY()) );    }};#endiffile.cpp#include "circle_header.h"void main(){    Location centre(1, 2);    Point point;            //调用默认构造函数    point.Move(4, 5);    //cout << "***" << point.GetX() << "---" << point.GetY() << endl;    Circle circle(centre, point);    cout << circle.Acreage() << "----" << circle.Girth() << endl;} 

读书人网 >C++

热点推荐