#include <iostream>
//声明类Point
class Point
{
public:
Point(float x=0,float y=0); //有默认参数的构造函数
void setPoint(float ,float); //设置坐标值
float getX( )const {return x;} //读x坐标
float getY( )const {return y;} //读y坐标
friend ostream & operator <<(ostream &,const Point &); //重载运算符“<<”
protected: //受保护成员
float x, y;
};
//下面定义Point类的成员函数
Point::Point(float a,float b) //Point的构造函数
{ //对x,y初始化
x=a;
y=b;
}
void Point::setPoint(float a,float b) //设置x和y的坐标值
{ //为x,y赋新值
x=a;
y=b;
}
//重载运算符“<<”,使之能输出点的坐标
ostream & operator <<(ostream &output, const Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
int main( )
{
Point p(3.5,6.4); //建立Point类对象p
cout<<"x="<<p.getX( )<<",y="<<p.getY( )<<endl; //输出p的坐标值
p.setPoint(8.5,6.8); //重新设置p的坐标值
cout<<"p(new):"<<p<<endl; //用重载运算符“<<”输出p点坐标
return 0;
}
x=3.5,y=6.4 p(new):[8.5,6.8]
class Circle:public Point //circle是Point类的公用派生类
{
public:
Circle(float x=0,float y=0,float r=0); //构造函数
void setRadius(float ); //设置半径值
float getRadius( )const; //读取半径值
float area ( )const; //计算圆面积
friend ostream &operator <<(ostream &,const Circle &); //重载运算符“<<”
private:
float radius;
};
//定义构造函数,对圆心坐标和半径初始化
Circle::Circle(float a,float b,float r):Point(a,b),radius(r){}
//设置半径值
void Circle::setRadius(float r){radius=r;}
//读取半径值
float Circle::getRadius( )const {return radius;}
//计算圆面积
float Circle::area( )const
{
return 3.14159*radius*radius;
}
//重载运算符“<<”,使之按规定的形式输出圆的信息
ostream &operator <<(ostream &output,const Circle &c)
{
output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.area( )<<endl;
return output;
}
int main( )
{
Circle c(3.5,6.4,5.2); //建立Circle类对象c,并给定圆心坐标和半径
cout<<"original circle:\\nx="<<c.getX()<<", y="<<c.getY()<<", r="<<c.getRadius( )<<", area="<<c.area( )<<endl; //输出圆心坐标、半径和面积
c.setRadius(7.5); //设置半径值
c.setPoint(5,5); //设置圆心坐标值x,y
cout<<"new circle:\\n"<<c; //用重载运算符“<<”输出圆对象的信息
Point &pRef=c; //pRef是Point类的引用变量,被c初始化
cout<<"pRef:"<<pRef; //输出pRef的信息
return 0;
}
original circle:(输出原来的圆的数据) x=3.5, y=6.4, r=5.2, area=84.9486 new circle:(输出修改后的圆的数据) Center=[5,5], r=7.5, area=176.714 pRef:[5,5] (输出圆的圆心“点”的数据)
Point & pRef = c;
class Cylinder:public Circle// Cylinder是Circle的公用派生类
{
public:
Cylinder (float x=0,float y=0,float r=0,float h=0); //构造函数
void setHeight(float ); //设置圆柱高
float getHeight( )const; //读取圆柱高
loat area( )const; //计算圆表面积
float volume( )const; //计算圆柱体积
friend ostream& operator <<(ostream&,const Cylinder&); //重载运算符<<
protected:
float height;//圆柱高
};
//定义构造函数
Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){}
//设置圆柱高
void Cylinder::setHeight(float h){height=h;}
//读取圆柱高
float Cylinder::getHeight( )const {return height;}
//计算圆表面积
float Cylinder::area( )const { return 2*Circle::area( )+2*3.14159*radius*height;}
//计算圆柱体积
float Cylinder::volume()const {return Circle::area()*height;}
ostream &operator <<(ostream &output,const Cylinder& cy)
{
output<<"Center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height <<"\\narea="<<cy.area( )<<", volume="<<cy.volume( )<<endl;
return output;
} //重载运算符“<<”
int main( )
{
Cylinder cy1(3.5,6.4,5.2,10);//定义Cylinder类对象cy1
cout<<"\\noriginal cylinder:\\nx="<<cy1.getX( )<<", y="<<cy1.getY( )<<", r="
<<cy1.getRadius( )<<", h="<<cy1.getHeight( )<<"\\narea="<<cy1.area()
<<",volume="<<cy1.volume()<<endl;//用系统定义的运算符“<<”输出cy1的数据
cy1.setHeight(15);//设置圆柱高
cy1.setRadius(7.5);//设置圆半径
cy1.setPoint(5,5);//设置圆心坐标值x,y
cout<<"\\nnew cylinder:\\n"<<cy1;//用重载运算符“<<”输出cy1的数据
Point &pRef=cy1;//pRef是Point类对象的引用变量
cout<<"\\npRef as a Point:"<<pRef;//pRef作为一个“点”输出
Circle &cRef=cy1;//cRef是Circle类对象的引用变量
cout<<"\\ncRef as a Circle:"<<cRef;//cRef作为一个“圆”输出
return 0;
}
original cylinder:(输出cy1的初始值) x=3.5, y=6.4, r=5.2, h=10 (圆心坐标x,y。半径r,高h) area=496.623, volume=849.486 (圆柱表面积area和体积volume) new cylinder: (输出cy1的新值) Center=[5,5], r=7.5, h=15 (以[5,5]形式输出圆心坐标) area=1060.29, volume=2650.72(圆柱表面积area和体积volume) pRef as a Point:[5,5] (pRef作为一个“点”输出) cRef as a Circle:Center=[5,5], r=7.5, area=176.714(cRef作为一个“圆”输出)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有