• 2023年9月12日


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

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

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

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

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

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

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

    1. #include
    2. using namespace std;
    3. //图形类
    4. class Shape
    5. {
    6. protected:
    7. double len;
    8. double Area;
    9. public:
    10. //无参构造
    11. Shape():len(0),Area(0)
    12. {
    13. cout<<"Shape:无参构造"<
    14. }
    15. //有参构造
    16. Shape(int l,int a):len(l),Area(a)
    17. {
    18. cout<<"Shape:有参构造"<
    19. }
    20. //析构函数
    21. ~Shape()
    22. {
    23. cout<<"析构函数"<
    24. }
    25. //拷贝构造函数
    26. Shape(const Shape &other):len(other.len),Area(other.Area)
    27. {
    28. cout<<"拷贝构造函数"<
    29. }
    30. //拷贝赋值函数
    31. Shape &operator=(const Shape &other)
    32. {
    33. this->len=other.len;
    34. this->Area=other.Area;
    35. return *this;
    36. }
    37. };
    38. //圆形类
    39. class Circle:public Shape
    40. {
    41. private:
    42. double R;
    43. public:
    44. //无参构造
    45. Circle()
    46. {
    47. cout<<"Circle:无参构造"<
    48. }
    49. //有参构造
    50. Circle(double r):R(r)
    51. {
    52. len=2*3.14*r;
    53. Area=r*r*3.14;
    54. cout<<"Circle:有参构造"<
    55. }
    56. //析构函数
    57. ~Circle()
    58. {
    59. cout<<"析构函数"<
    60. }
    61. //拷贝构造函数
    62. Circle(Circle &other):Shape(other.len,other.Area),R(other.R)
    63. {
    64. cout<<"拷贝构造函数"<
    65. }
    66. //拷贝赋值函数
    67. Circle &operator=(const Circle &other)
    68. {
    69. this->R=other.R;
    70. this->len=other.len;
    71. this->Area=other.Area;
    72. return *this;
    73. }
    74. //求周长
    75. double c_len()
    76. {
    77. return len;
    78. }
    79. //求面积
    80. double c_area()
    81. {
    82. return Area;
    83. }
    84. };
    85. //矩形类
    86. class Rect:public Shape
    87. {
    88. private:
    89. double cha;
    90. double gao;
    91. public:
    92. //无参构造
    93. Rect()
    94. {
    95. cout<<"Rect:无参构造"<
    96. }
    97. //有参构造
    98. Rect(double c,double g):cha(c),gao(g)
    99. {
    100. len=2*(c+g);
    101. Area=c*g;
    102. cout<<"Rect:有参构造"<
    103. }
    104. //析构函数
    105. ~Rect()
    106. {
    107. cout<<"析构函数"<
    108. }
    109. //拷贝构造函数
    110. Rect(const Rect &other):Shape(other.len,other.Area),cha(other.cha),gao(other.gao)
    111. {
    112. cout<<"拷贝构造函数"<
    113. }
    114. //拷贝赋值函数
    115. Rect &operator=(const Rect &other)
    116. {
    117. len=other.len;
    118. Area=other.Area;
    119. cha=other.cha;
    120. gao=other.gao;
    121. return *this;
    122. }
    123. //求周长
    124. double r_len()
    125. {
    126. return cha*2+gao*2;
    127. }
    128. //求面积
    129. double r_area()
    130. {
    131. return cha*gao;
    132. }
    133. };
    134. int main()
    135. {
    136. Circle y(5);
    137. cout<<"这个圆形的周长为"<c_len()<
    138. cout<<"这个圆形的面积为"<c_area()<
    139. Rect r(5,8);
    140. cout<<"这个矩形的周长为"<r_len()<
    141. cout<<"这个矩形的面积为"<r_area()<
    142. return 0;
    143. }

  • 相关阅读:
    DataGridView控件的使用
    Linux epoll 编程些许浅谈
    LeetCode 2609. 最长平衡子字符串
    解决zip文件中文乱码问题
    模拟验证码发送
    如何使用程序【爬取视频】,完成中秋节大制作
    快速入门vuex!!
    Linux使用man指令出现No manual entry for fork
    vue2基础知识-2
    Mybatis分页
  • 原文地址:https://blog.csdn.net/2201_75732711/article/details/132839614