一个新手的问题!
碰上这样的一道问题:定义一个描述坐标位置的类location,由它派生出具有显示和移动功能的点类point, 再从point类派生出圆类circles,在circles类中将location类的数据成员作为圆的圆心, 可以求出圆的周长和面积。
刚学派生 有点难理解 望高手们帮忙解决下!
[解决办法]
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 ¢re, 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;}