• C++继承相关应用练习


    1、

    实现一个图形类(Shape),包含受保护成员属性:周长、面积,

    公共成员函数:特殊成员函数书写

    定义一个圆形类(Circle),继承自图形类,包含私有属性:半径

    公共成员函数:特殊成员函数、以及获取周长、获取面积函数

    定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度

    公共成员函数:特殊成员函数、以及获取周长、获取面积函数

    在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。

    1. #include <iostream>
    2. #include <cmath>
    3. #define PI acos(-1)
    4. using namespace std;
    5. //图形类
    6. class Shape
    7. {
    8. protected:
    9. int Zc; //周长
    10. int Mj; //面积
    11. public:
    12. //无参
    13. Shape()
    14. {
    15. cout<<"无参构造函数"<<endl;
    16. }
    17. //有参
    18. Shape(int z,int m):Zc(z),Mj(m)
    19. {
    20. cout<<"有参构造函数"<<endl;
    21. }
    22. //析构函数
    23. ~Shape()
    24. {
    25. cout<<"析构函数"<<endl;
    26. }
    27. //拷贝函数
    28. Shape(const Shape &other):Zc(other.Zc),Mj(other.Mj)
    29. {
    30. cout<<"有参构造函数"<<endl;
    31. }
    32. void show()
    33. {
    34. cout<<"周长为:"<<Zc<<endl;
    35. cout<<"面积为:"<<Mj<<endl;
    36. }
    37. };
    38. //圆形类
    39. class Circle:public Shape
    40. {
    41. private:
    42. int Bj; //半径
    43. public:
    44. //无参
    45. Circle()
    46. {
    47. cout<<"无参构造函数"<<endl;
    48. }
    49. //有参
    50. Circle(int z,int m,int b):Shape(z,m),Bj(b)
    51. {
    52. cout<<"有参构造函数"<<endl;
    53. }
    54. //析构函数
    55. ~Circle()
    56. {
    57. cout<<"析构函数"<<endl;
    58. }
    59. //拷贝函数
    60. Circle(const Circle &other):Shape(other.Zc,other.Mj),Bj(other.Bj)
    61. {
    62. cout<<"有参构造函数"<<endl;
    63. }
    64. //获取周长
    65. void get_zhouchang()
    66. {
    67. Zc=2*PI*Bj;
    68. }
    69. //获取面积
    70. void get_mianji()
    71. {
    72. Mj=PI*(pow(Bj,2));
    73. }
    74. };
    75. //矩形类
    76. class Rect:public Shape
    77. {
    78. private:
    79. int Cd; //长度
    80. int Kd; //宽度
    81. public:
    82. //无参
    83. Rect()
    84. {
    85. cout<<"无参构造函数"<<endl;
    86. }
    87. //有参
    88. Rect(int z,int m,int c,int k):Shape(z,m),Cd(c),Kd(k)
    89. {
    90. cout<<"有参构造函数"<<endl;
    91. }
    92. //析构函数
    93. ~Rect()
    94. {
    95. cout<<"析构函数"<<endl;
    96. }
    97. //拷贝函数
    98. Rect(const Rect &other):Shape(other.Zc,other.Mj),Cd(other.Cd),Kd(other.Kd)
    99. {
    100. cout<<"有参构造函数"<<endl;
    101. }
    102. //获取周长
    103. void get_zhouchang()
    104. {
    105. Zc=(Cd+Kd)*2;
    106. }
    107. //获取面积
    108. void get_mianji()
    109. {
    110. Mj=Cd*Kd;
    111. }
    112. };
    113. int main()
    114. {
    115. //圆形
    116. Circle C1(0,0,6);
    117. C1.get_zhouchang();
    118. C1.get_mianji();
    119. C1.show();
    120. //矩形
    121. Rect R1(0,0,3,4);
    122. R1.get_zhouchang();
    123. R1.get_mianji();
    124. R1.show();
    125. return 0;
    126. }

    2、思维导图

  • 相关阅读:
    FFmepg--音频编码流程--pcm编码为aac
    beego框架自学笔记1
    定时删除指定目录下的文件,文件名按时间有规律,定时删除过期文件
    Java-API简析_java.lang.Object类(基于 Latest JDK)(浅析源码)
    计算机视觉项目-人脸识别与检测
    mysql update更新数据时null字段是否更新进数据库总结
    【工作笔记】记录工作中一次处理冲突
    【Linux操作系统】——安装VMware
    ​LeetCode解法汇总1726. 同积元组
    python+opencv特征匹配算法
  • 原文地址:https://blog.csdn.net/Venusler/article/details/132839837