第六章 作业

                                                                                          第六章  作业

1. #include <iostream.h>
class Point
{public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const
{return x;}
float getY() const
{return y;}
friend ostream & operator<<(ostream &output,Point &);
protected:
float x,y;
};
Point::Point(float a,float b)
{
x=a;y=b;
}
void Point::setPoint(float a,float b)
{
 x=a;y=b;
}
ostream & operator<<(ostream &output,Point &p)
{
 output<<"["<<p.x<<","<<p.y<<"]"<<endl;
 return output;
}
class Circle:public Point
{
public:
Circle(float x,float y,float r):Point(x,y),radius(r){}
void setRadius(float r)
{radius=r;}
float getRadius() const
{return radius;}
double area() const
{
return 3.1415*radius*radius;
}
friend ostream & operator<<(ostream &output,Circle &);
protected:
float radius;
};
ostream & operator<<(ostream &output,Circle &c)
{
output<<"Center =["<<c.x<<","<<c.y<<"],r= "<<c.radius<<",area="<<c.area()<<endl;
return output;
}
class Cylinder:public Circle
{
public:
Cylinder(float x,float y,float r,float h):Circle(x,y,r),height(h){}
void setHeight(float h)
{height=h;}
float getHeight() const
{return height;}
double area() const
{
return 2*Circle::area()+2*3.1415*radius*height; 
}
double volume() const
{
   return 3.1415*radius*radius*height;
}
friend ostream & operator<<(ostream &output,Cylinder &);
protected:
float height;
};
ostream & operator<<(ostream &output,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);
 cout<<"original cylinder:\nx="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<"\narea="<<cy1.area()<<",volume="<<cy1.volume()<<endl;
 cy1.setHeight(15);
 cy1.setRadius(7.5);
 cy1.setPoint(5,5);
 cout<<"\nnew cylinder:\n"<<cy1;
 Point &pRef=cy1;
 cout<<"\npRef as a point:"<<pRef;
 Circle &cRef=cy1;
 cout<<"\ncRef as a circle:"<<cRef;
 return 0;
}




3.(2) #include <iostream>
using namespace std;
class Point
{
 public:
Point(float a,float b):x(a),y(b){}
~Point(){cout<<"executing Point destructor"<<endl;}
 private:
float x;
float y;
};
class Circle:public Point
{
public:
Circle(float a,float b,float r):Point(a,b),radius(r){}
~Circle(){cout<<"executing Circle destructor"<<endl;}
private:
float radius;
};
int main()
{
 Point *p=new Circle(1,2,3);
 Circle *r=new Circle(1,2,3);
 delete r;
 return 0;
}









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值