Ex8_2.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例8.2】由圆和高多重继承派生出圆锥。
  2. #include<iostream>
  3. #include<cmath>
  4. using namespace std;
  5. class Circle{
  6. protected:
  7. float x,y,r; //(x,y)为圆心,r为半径
  8. public:
  9. Circle(float a=0,float b=0,float R=0){x=a;y=b;r=R;}
  10. void Setcoordinate(float a,float b){x=a;y=b;}
  11. void Getcoordinate(float &a,float &b){a=x;b=y;}
  12. void SetR(float R){r=R;}
  13. float GetR(){return r;}
  14. float GetAreaCircle(){return float(r*r*3.14159);}
  15. float GetCircumference(){return float(2*r*3.14159);}
  16. };
  17. class Line{
  18. protected:
  19. float High;
  20. public:
  21. Line(float a=0){High=a;}
  22. void SetHigh(float a){High=a;}
  23. float GetHigh(){return High;}
  24. };
  25. class Cone:public Circle,public Line{
  26. public:
  27. Cone(float a,float b,float R,float d):Circle(a,b,R),Line(d){}
  28. float GetCV(){return float(GetAreaCircle()*High/3);}
  29. float GetCA(){
  30. return float(GetAreaCircle()+r*3.14159*sqrt(r*r+High*High));
  31. }//共有派生类中能直接访问直接基类的保护成员
  32. };
  33. int main(){
  34. Cone c1(5,8,3,4);
  35. float a,b;
  36. cout<<"圆锥体积:"<<c1.GetCV()<<'n';
  37. cout<<"圆锥表面积:"<<c1.GetCA()<<'n';
  38. cout<<"圆锥底面积:"<<c1.GetAreaCircle()<<'n';
  39. cout<<"圆锥底周长:"<<c1.GetCircumference()<<'n';
  40. cout<<"圆锥底半径:"<<c1.GetR()<<'n';
  41. c1.Getcoordinate(a,b);
  42. cout<<"圆锥底圆心坐标:("<<a<<','<<b<<")n";
  43. cout<<"圆锥高:"<<c1.GetHigh()<<'n';
  44. return 0;
  45. }