C++之类型转换构造函数

来源:互联网 发布:c语言null包含头文件 编辑:程序博客网 时间:2024/05/21 10:08
//完成极坐标到直角坐标的转换
  //polar中的数据radius和angle是私有的,因此必须提供函数直接访问
  #include<iostream.h>
  #include<math.h> //math.h包括sin,cos等
  class Polar //极坐标中的点
  {
  private:
   double radius;//极径
   double angle;//极角
  public:
   Polar()
   {
   radius=0.0;
   angle=0.0;
   }
   Polar(double r,double a)
   {
   radius=r;
   angle=a;
   }
   void display()
   {
   cout << "(" << radius << ", " << angle << ")";
   }
   double getr()
   {
   return radius;
   }
   double geta()
   {
   return angle;
   }
  };
  
  class Rec
  {
  private:
   double xco; //x坐标
   double yco; //y坐标
  public:
   Rec()
   {
   xco=0.0;
   yco=0.0;
   }
   Rec(Polar p)
   {
   float r=(float)p.getr();//从polar对象中获得极径和极角
   float a=(float)p.geta();
   xco=r*cos(a);//变成x坐标和y坐标
   yco=r*sin(a);
   }
   void display()
   {
   cout << "(" << xco << ", " << yco << ")";
   }
  };
  void main()
  {
   Rec rec;
   Polar pol(10.0,0.785398);
   rec=pol;//使用转换函数(或rec=Rec(pol))
   cout << "/nPol=";
   pol.display ();//显示原始极坐标
   cout << "/nRec=";
   rec.display ();//显示等价的直角坐标
  }
    
原创粉丝点击