程序代码
#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"); }
执行结果