• c++day5---9.12


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

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

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

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

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

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

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

    1. #include
    2. using namespace std;
    3. class Shape//实现一个图形类
    4. {
    5. protected:
    6. double zc;//周长
    7. double mj;//面积
    8. public:
    9. Shape()//无参构造
    10. {
    11. cout<<"图形无参构造成功"<
    12. }
    13. Shape(double a,double b):zc(a),mj(b)//有参构造
    14. {
    15. cout<<"图形有参构造成功"<
    16. }
    17. ~Shape(){}//析构函数
    18. Shape(const Shape &other):zc(other.zc),mj(other.mj)//拷贝构造
    19. {
    20. cout<<"图形拷贝构造成功"<
    21. }
    22. Shape & operator=(const Shape &other)//拷贝赋值
    23. {
    24. if(this != &other) //确定不是自己给自己赋值
    25. {
    26. this->zc = other.zc;
    27. this->mj = other.mj;
    28. }
    29. cout<<"拷贝赋值函数成功"<
    30. return *this; //返回自身引用
    31. }
    32. virtual double get_zh()//获取周长函数
    33. {
    34. return zc;
    35. }
    36. virtual double get_mj()//获取面积函数
    37. {
    38. return mj;
    39. }
    40. };
    41. class Circle:public Shape//定义一个圆形类,继承图形类
    42. {
    43. private:
    44. double bj;//半径
    45. public:
    46. Circle()//无参构造
    47. {
    48. cout<<"圆形无参构造成功"<
    49. }
    50. Circle(double c):bj(c)//有参构造
    51. {
    52. cout<<"圆形有参构造成功"<
    53. }
    54. ~Circle(){}//析构函数
    55. Circle(const Circle &other):Shape(other),bj(other.bj)//拷贝构造
    56. {
    57. cout<<"圆形拷贝构造成功"<
    58. }
    59. Circle & operator=(const Circle &other)//拷贝赋值
    60. {
    61. if(this != &other) //确定不是自己给自己赋值
    62. {
    63. Shape::operator=(other);
    64. this->bj = other.bj;
    65. }
    66. cout<<"拷贝赋值函数成功"<
    67. return *this; //返回自身引用
    68. }
    69. double get_zh() override//获取周长函数
    70. {
    71. zc=3.14*2*bj;
    72. return zc;
    73. }
    74. double get_mj() override//获取面积函数
    75. {
    76. mj=3.14*bj*bj;
    77. return mj;
    78. }
    79. void show()
    80. {
    81. cout<<"半径为:"<
    82. cout<<"周长为:"<" 面积为:"<
    83. }
    84. };
    85. class Rect:public Shape//定义一个矩形类,继承图形类
    86. {
    87. private:
    88. double cd;//长度
    89. double kd;//宽度
    90. public:
    91. Rect()//无参构造
    92. {
    93. cout<<"矩形无参构造成功"<
    94. }
    95. Rect(double c,double d):cd(c),kd(d)//有参构造
    96. {
    97. cout<<"矩形有参构造成功"<
    98. }
    99. ~Rect(){}//析构函数
    100. Rect(const Rect &other):Shape(other),cd(other.cd),kd(other.kd)//拷贝构造
    101. {
    102. cout<<"矩形拷贝构造成功"<
    103. }
    104. Rect & operator=(const Rect &other)//拷贝赋值
    105. {
    106. if(this != &other) //确定不是自己给自己赋值
    107. {
    108. Shape::operator=(other);
    109. this->cd = other.cd;
    110. this->kd = other.kd;
    111. }
    112. cout<<"拷贝赋值函数成功"<
    113. return *this; //返回自身引用
    114. }
    115. double get_zh()//获取周长函数
    116. {
    117. zc=(cd+kd)*2;
    118. return zc;
    119. }
    120. double get_mj()//获取面积函数
    121. {
    122. mj=cd*kd;
    123. return mj;
    124. }
    125. void show()
    126. {
    127. cout<<"长为:"<" 宽为:"<
    128. cout<<"周长为:"<" 面积为:"<
    129. }
    130. };
    131. int main()
    132. {
    133. Circle c1(5);
    134. double a=c1.get_zh();
    135. double b=c1.get_mj();
    136. c1.show();
    137. Rect r1={6,8};
    138. a=r1.get_zh();
    139. b=r1.get_mj();
    140. r1.show();
    141. return 0;
    142. }

    五、思维导图

  • 相关阅读:
    未雨绸缪,前端小知识
    深入浅出(五)JsonCpp库
    酒店管理系统
    XMLHttpRequest Level2的新功能&&使用jquery简化文件上传
    Java源码分析:Guava之不可变集合ImmutableMap的源码分析
    微服务的快速开始(nacos)最全快速配置图解
    【JAVA UI】abilitySlice或ability以Action方式跳转
    CV2对图像做渐变模糊
    Docker基础-2.常用命令与Docker镜像
    man 获得帮助信息
  • 原文地址:https://blog.csdn.net/yjh666jhy/article/details/132838522