程序代码
#include <iostream>
using namespace std;
class Point//点类
{
public:
//使用初始化表初始化点类
Point(double a = 0, double b = 0):x(a), y(b){}
double getX();
double getY();
//重载<<实现点的坐标的输出
friend ostream& operator<<(ostream &output, Point &p);
protected:
double x;//横坐标
double y;//纵坐标
};
//得到x的值
double Point::getX()
{
return x;
}
//得到y的值
double Point::getY()
{
return y;
}
//重载<<实现点的坐标的输出
ostream& operator<<(ostream &output, Point &p)
{
output<<"("<<p.x<<","<<p.y<<")"<<endl;
return output;
}
//Point派生出Circle类
class Circle : public Point
{
public:
//构造函数(初始化半径的两个端点)
Circle(double a, double b, double r);
void SetRadius();//设置圆的半径
double GetRadius();//得到圆的半径
double getArea();//计算圆的面积
//重载<<实现输出圆的面积
friend ostream& operator<<(ostream &output, Circle &c);
protected:
double r;//圆的半径
};
//构造函数(使用初始化表初始化Circle类)
Circle::Circle(double a, double b, double r):Point(a, b),r(r){}
//设置圆的半径
void Circle::SetRadius()
{
this->r = r;
}
//得到圆的半径
double Circle::GetRadius()
{
return r;
}
//计算圆的面积
double Circle::getArea()
{
//计算圆的面积
double s = 3.14 * r * r;
return s;
}
//重载<<实现输出圆的面积
ostream& operator<<(ostream &output, Circle &c)
{
output<<"圆的面积:"<<c.getArea()<<endl;
return output;
}
void main()
{
//定义一个圆对象
Circle c(1.0, 2.9, 4.0);
//输出圆的半径
cout<<"圆的半径:"<<c.GetRadius()<<endl;
//输出圆的面积
cout<<c;
system("pause");
}
执行结果