程序代码
#include <iostream>
using namespace std;
class Point//点类
{
public:
//使用初始化表初始化点类
Point(double a = 0, double b = 0):x(a), y(b){}
void setPoint(double a, double b);//设置点的坐标
double getX();
double getY();
//重载<<实现点的坐标的输出
friend ostream& operator<<(ostream &output, Point &p);
protected:
double x;//横坐标
double y;//纵坐标
};
//设置点的坐标
void Point::setPoint(double a, double b)
{
x = a;
y = b;
}
//得到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 r);//设置圆的半径
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(double r)
{
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;
}
//圆类派生出圆柱类
class Cylinder : public Circle
{
public:
Cylinder(double a = 0, double b = 0, double r = 0, double h = 0);//构造函数
void setHeight(double h);//设置圆柱体的高度
double SuperArea();//计算圆柱体的表面积
double setVolume();//计算圆柱体的的体积
//重载<<实现输出圆柱体的表面积和体积
friend ostream& operator<<(ostream &output, Cylinder &cy);
protected:
double height;//高度
};
//构造函数
Cylinder::Cylinder(double a, double b, double r, double h):
Circle(a, b, r), height(h){}
//设置圆柱体的高度
void Cylinder::setHeight(double h)
{
height = h;
}
//计算圆柱体的表面积
double Cylinder::SuperArea()
{
double s;
s = 2 * Circle::getArea() + 2 * 3.14 * Circle::GetRadius() * height;
return s;
}
//计算圆柱体的的体积
double Cylinder::setVolume()
{
double v;
v = Circle::getArea() * height;
return v;
}
//重载<<实现输出圆柱体的表面积和体积
ostream& operator<<(ostream &output, Cylinder &cy)
{
output<<"圆柱体的表面积:"<<cy.SuperArea()<<"\n"<<"圆柱体的体积:"<<cy.setVolume()<<endl;
return output;
}
void main()
{
//定义一个圆柱体对象
Cylinder c1;
//设置点的坐标
c1.setPoint(1.0, 2.0);
//设置圆的半径
c1.SetRadius(2.0);
//设置圆柱体的高为1.0
c1.setHeight(1.0);
//输出圆柱体的表面积和体积
cout<<c1;
system("pause");
}
执行结果