投资人关注创始人什么:我的作业,C++

来源:百度文库 编辑:高考问答 时间:2024/04/29 10:30:35
//修改例10-4,从Point了中派生出一个Line类,Line类增加一个数据成员EndPoint,计算线的长度.试比较一下与直接使用Point类来构造Line类的不同之处。
//例10-4 多个文件组成的程序
// Point.h文件 Point类的声明
#ifndef POINT_H
#define POINT_H
class Point {
int x, y; //点的x和y坐标
public:
Point( int = 0, int = 0 ); // 构造函数
void SetPoint( int, int ); // 设置坐标
int GetX() { return x; } // 取x坐标
int GetY() { return y; } // 取y坐标
void Print(); //输出点的坐标
};
#endif
// Point.cpp文件 Point类的成员函数定义
#include <iostream.h>
#include "point.h"
Point::Point( int a, int b ) { SetPoint( a, b ); }
void Point::SetPoint( int a, int b )
{ x = a;
y = b;
}
void Point::Print()
{ cout << '[' << x << ", " << y << ']';}
// Circle.h文件
#ifndef CIRCLE_H
#define CIRCLE_H
#include <iostream.h>
#include "point.h"
class Circle : public Point
{ double radius;
public:
Circle(int x = 0, int y = 0 , double r = 0.0);
void SetRadius( double ); //设置半径
double GetRadius(); //取半径
double Area(); //计算面积a
void Print(); //输出圆心坐标和半径
};
#endif
// circle.cpp文件 circle类的成员函数定义
#include "circle.h"
Circle::Circle(int a,int b,double r): Point(a,b)
{ SetRadius( r ); }
void Circle::SetRadius( double r ) { radius = ( r >= 0 ? r : 0 ); }
double Circle::GetRadius(){ return radius; }
double Circle::Area(){ return 3.14159 * radius * radius; }
void Circle::Print()
{ cout << "Center = ";
Point::Print();
cout << "; Radius = " << radius << endl;
}
// Example10-4.cpp文件: Circle Demo
#include <iostream.h>
#include "point.h"
#include "circle.h"
int main()
{ Point p(30,50);
Circle c(120,80,10.0);
cout << "Point p: ";
p.Print();
cout << "\nCircle c: ";
c.Print();
cout << "The certre of circle c: ";
c.Point::Print();
cout << "\nThe area of circle c: " << c.Area() << endl;
return 0;
}

自己动手,丰衣足食