编程小练习

来源:互联网 发布:雅思大作文 知乎 编辑:程序博客网 时间:2024/06/05 07:37

  1. #include<iostream>  
  2. using namespace std;  
  3. class Shape  
  4. {  
  5. public:  
  6.     virtual double area() const=0;  
  7. };  
  8.   
  9. class Circle:public Shape  
  10. {  
  11. private:  
  12.     double banjing;  
  13. public :  
  14.     Circle(double ban=0):banjing(ban){}  
  15.     virtual double area() const;  
  16. };  
  17. double Circle::area() const  
  18. {  
  19.     return banjing*banjing*3.14159;  
  20. }  
  21.   
  22. class Rectangle:public Shape  
  23. {  
  24. private:  
  25.     double chang;  
  26.     double kuan;  
  27. public:  
  28.     Rectangle(double chan,double kua):chang(chan),kuan(kua){}  
  29.     virtual double area() const;  
  30. };  
  31. double Rectangle::area() const  
  32. {  
  33.     return chang*kuan;  
  34. }  
  35.   
  36.   
  37. class Triangle:public Shape  
  38. {  
  39. private:  
  40.     double dibian;  
  41.     double gao;  
  42. public:  
  43.     Triangle(double di,double ga):dibian(di),gao(ga){}  
  44.     virtual double area() const;  
  45. };  
  46. double Triangle::area() const  
  47. {  
  48.     return dibian*gao*0.5;  
  49. }  
  50.   
  51. int main()  
  52. {  
  53.     Circle c1(12.6),c2(4.9);//建立Circle类对象c1,c2,参数为圆半径  
  54.     Rectangle r1(4.5,8.4),r2(5.0,2.5);//建立Rectangle类对象r1,r2,参数为矩形长、宽  
  55.     Triangle t1(4.5,8.4),t2(3.4,2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高  
  56.     Shape *pt[6]= {&c1,&c2,&r1,&r2,&t1,&t2}; //定义基类指针数组pt,使它每一个元素指向一个派生类对象  
  57.     double areas=0.0; //areas为总面积  
  58.     for(int i=0; i<6; i++)  
  59.     {  
  60.         areas=areas + pt[i]->area();  
  61.     }  
  62.     cout<<"totol of all areas="<<areas<<endl;   //输出总面积  
  63.     return 0;  
  64. }  
0 0