设为首页 加入收藏

TOP

4.11 上机实践
2013-10-07 01:18:43 来源: 作者: 【 】 浏览:71
Tags:4.11 上机 实践

4.11  上机实践

类point表示一个坐标点,其原型为:

  1. class point  
  2. {  
  3. public:  
  4. point(double a=0,double b=0){x=a;y=b;}  
  5. …  
  6. private:  
  7. double x;double y;  
  8. }; 

要求编写程序,完成如下功能。

(1)定义类point的成员函数,计算一个点到当前点的距离。其原型如下:double dis(point &p)。

(2)由类point定义一个共有派生类circle,类circle中增加一个数据成员double r,r表示半径。该类有两个构造函数和计算面积的函数area()。

(3)定义main()函数,按下面的要求编写程序。

  1. main()  
  2. {  
  3. //定义类point的对象p1,坐标为(2.5,3.5)  
  4. //定义类point的对象p2,坐标(3.0,2.0)  
  5. //用拷贝构造的方式定义point对象p3,坐标与p1相同  
  6. //计算并输出p2,p3距离  
  7. //定义类circle的对象c,圆心坐标(2.0,2.0),半径1.5  
  8. //计算并输出c的面积  

提示:本例主要考察类的基本使用方法,包括类的成员函数的定义,构造函数的使用、类的派生和对象的使用等。参考代码如下:

  1. #include <iostream.h>  
  2. #include <math.h>  
  3. class point  
  4. {  
  5. public:  
  6.     point(double a=0,double b=0){X = a;Y = b;}      //构造函数  
  7.     point(const point &p)                               //拷贝构造函数  
  8.     {  
  9.         X = p.X;Y = p.Y;  
  10.     }  
  11.     ~point(){}  
  12.     double distance(point &p)                       //成员函数      
  13.     {  
  14.         double dis;  
  15.         dis = sqrt(pow(this->X-p.X,2)+pow(this->Y-p.Y,2));  
  16.         return dis;  
  17.     }  
  18.     void print()                                  
  19.     {  
  20.         cout<<"X= "<<this->X<<"   "<<"Y= "<<this->Y<<endl;  
  21.     }  
  22. private:  
  23.     double X;  
  24.     double Y;  
  25. };  
  26. class circle:public point                           //派生类  
  27. {  
  28. private :  
  29.     double r;  
  30. public:  
  31.     circle(double a,double b,double c):point(a,b)     
  32.     { r = c;}  
  33.     ~circle(){}  
  34.     double area(){return 3.14159 *r *r;}      
  35. };  
  36.  
  37. int main()  
  38. {  
  39.     point p1(2.5,3.5),p2(3.0,0.0);                  //定义类point对象  
  40.     point p3(p1);                                   
    //使用拷贝构造函数定义对象  
  41.     cout<<"the distance between p2 and p3 is : "<<p2.distance(p3)<<endl;  
  42.       
  43.     circle c1(2.0,2.0,1.5);                         //定义类circle对象  
  44.     cout<<"the area of circle c1 is: "<<c1.area()<<endl;  
  45.     return 0;  

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.12 常见问题及解答 下一篇14.1.3 单线程与多线程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: