写一个程序,定义抽象基类Shape,由它派生出3个派生类,Cirle(圆形、Rectangle(矩形)、Triangle(三角形)。用一个函数printArea 分别输出以上三者的面积,3个图形的数据在定义对象时给定、

 

  1. #include<iostream>  
  2. using namespace std;  
  3. /*  
  4.     圆面积S=3.14*r*r  
  5.     矩形面积S=长*宽  
  6.     三角形面积S=(底*高)/2  
  7. */ 
  8. class Shape  
  9. {  
  10. public:  
  11.     virtual float area()const=0;  
  12.  
  13. };  
  14. class Circle:public Shape  
  15. {  
  16. public:  
  17.     Circle(double a):r(a){}  
  18.     virtual float area()const{return 3.14*r*r;}  
  19.     
  20. private:  
  21.     double r;  
  22. };  
  23.  
  24. class Rectangle:public Shape  
  25. {  
  26. public:  
  27.     Rectangle(double a,double b):l(a),w(b){}  
  28.     virtual float area()const{return l*w;}  
  29.  
  30. private:  
  31.     double l;  
  32.     double w;  
  33. };  
  34. class Triangle:public Shape  
  35. {  
  36. public:  
  37.     Triangle(double a,double b):d(a),h(b){}  
  38.     virtual float area()const{return (d*h)/2;}  
  39.  
  40. private:  
  41.     double d;  
  42.     double h;  
  43. };  
  44. void printArea(const Shape &s1)  
  45. {  
  46.     cout<<s1.area()<<endl;  
  47. }  
  48. int main()  
  49. {  
  50.       
  51.     Circle c1(6.5);  
  52.     cout<<"圆面积=";  
  53.     printArea(c1);  
  54.     Rectangle r1(3,6);  
  55.     cout<<"矩形面积=";  
  56.     printArea(r1);  
  57.     Triangle t1(4,2);  
  58.     cout<<"三角形面积=";  
  59.      printArea(t1);  
  60.  
  61.