• 2023/09/12 qt&c++


    实现一个图形类(Shape) ,包含受保护成员属性:周长、面积,
                            公共成员函数:特殊成员函数书写
    定义一个圆形类(Circle) ,继承自图形类,包含私有属性:半径
                            公共成员函数:特殊成员函数、以及获取周长、获取面积函数
    定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度
                            公共成员函数:特殊成员函数、以及获取周长、获取面积函数
    在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。

    1. #include
    2. #define pai 3.14159
    3. using namespace std;
    4. //图形类
    5. class Shape
    6. {
    7. protected:
    8. double cir; //周长
    9. double area; //面积
    10. public:
    11. //无参构造函数
    12. Shape(){}
    13. //有参构造函数
    14. Shape(double a,double b):cir(a),area(b)
    15. {
    16. cout<<"Shape有参构造函数"<
    17. }
    18. //析构函数
    19. ~Shape()
    20. {
    21. cout<<"Shape析构函数"<
    22. }
    23. //拷贝构造函数
    24. Shape(const Shape &other):cir(other.cir),area(other.area)
    25. {
    26. cout<<"拷贝构造函数"<
    27. }
    28. //定义拷贝赋值函数
    29. Shape &operator=(const Shape &other)
    30. {
    31. this->cir =other.cir;
    32. this->area =other.area;
    33. return *this;
    34. }
    35. //移动赋值函数
    36. Shape &operator=(Shape &&other)
    37. {
    38. this->cir =other.cir;
    39. this->area =other.area;
    40. return *this;
    41. }
    42. };
    43. //圆形类,继承图形类
    44. class Circle:public Shape
    45. {
    46. private:
    47. double r; //半径
    48. public:
    49. //无参构造函数
    50. Circle(){}
    51. //有参构造函数
    52. Circle(double c):r(c)
    53. {
    54. cout<<"Circle有参构造函数"<
    55. }
    56. //析构函数
    57. ~Circle()
    58. {
    59. cout<<"Circle析构函数"<
    60. }
    61. //拷贝构造函数
    62. Circle(const Circle &other):r(other.r)
    63. {
    64. cout<<"拷贝构造函数"<
    65. }
    66. //定义拷贝赋值函数
    67. Circle &operator=(const Circle &other)
    68. {
    69. this->r =other.r;
    70. return *this;
    71. }
    72. //移动赋值函数
    73. Circle &operator=(Circle &&other)
    74. {
    75. this->r =other.r;
    76. return *this;
    77. }
    78. //获取周长
    79. double get_len()
    80. {
    81. cir = 2 * r * pai;
    82. return cir;
    83. }
    84. //获取面积
    85. double get_area()
    86. {
    87. area = pai * r * r;
    88. return area;
    89. }
    90. };
    91. //定义一个矩形类,继承自图形类
    92. class Rect:public Shape
    93. {
    94. private:
    95. double lenth; //长度
    96. double width; //宽度
    97. public:
    98. //无参构造函数
    99. Rect(){}
    100. //有参构造函数
    101. Rect(double l,double w):lenth(l),width(w)
    102. {
    103. cout<<"Rect有参构造函数"<
    104. }
    105. //析构函数
    106. ~Rect()
    107. {
    108. cout<<"Rect析构函数"<
    109. }
    110. //拷贝构造函数
    111. Rect(const Rect &other):lenth(other.lenth),width(other.width)
    112. {
    113. cout<<"拷贝构造函数"<
    114. }
    115. //定义拷贝赋值函数
    116. Rect &operator=(const Rect &other)
    117. {
    118. this->width =other.width;
    119. this->lenth = other.lenth;
    120. return *this;
    121. }
    122. //移动赋值函数
    123. Rect &operator=(Rect &&other)
    124. {
    125. this->width =other.width;
    126. this->lenth = other.lenth;
    127. return *this;
    128. }
    129. //获取周长
    130. double get_len()
    131. {
    132. cir = (width+lenth)*2;
    133. return cir;
    134. }
    135. //获取面积
    136. double get_area()
    137. {
    138. area = lenth * width;
    139. return area;
    140. }
    141. };
    142. int main()
    143. {
    144. Circle c1(5.3);
    145. cout<<"周长是"<get_len()<<" 面积是:"<get_area()<
    146. Circle c2(c1);
    147. cout<<"周长是"<get_len()<<" 面积是:"<get_area()<
    148. Circle c3 = (2);
    149. cout<<"周长是"<get_len()<<" 面积是:"<get_area()<
    150. cout<<"*********************************************************"<
    151. Rect r1(2.4,9.9);
    152. cout<<"Rect周长是"<get_len()<<" Rect面积是:"<get_area()<
    153. Rect r2(r1);
    154. cout<<"Rect周长是"<get_len()<<" Rect面积是:"<get_area()<
    155. Rect r3(1.2,3.4);
    156. cout<<"Rect周长是"<get_len()<<" Rect面积是:"<get_area()<
    157. Rect r4 = r3;
    158. cout<<"Rect周长是"<get_len()<<" Rect面积是:"<get_area()<
    159. return 0;
    160. }

  • 相关阅读:
    封装一个自己的前端脚手架cli工具(二)
    “AttackCombo-basketball“ app Tech Support(URL)
    【QT】使用toBase64方法将.txt文件的明文变为非明文(类似加密)
    Android-Fragment知识详解
    第六章:利用dumi搭建组件文档【前端工程化入门-----从零实现一个react+ts+vite+tailwindcss组件库】
    1.4.15 实验15:ospf多区域NSSA
    Java面向对象16:接口的定义与实现
    黑猫带你学Makefile第3篇:Makefile基本语法
    场景之分页查询设计
    Hadoop——Yarn基础架构
  • 原文地址:https://blog.csdn.net/cscssacd/article/details/132839924