• c++day4


    1. #include
    2. using namespace std;
    3. class Math
    4. {
    5. friend const Math operator-(const Math &L, const Math &R);
    6. friend bool operator>(const Math &L, const Math &R);
    7. friend Math &operator-=(Math &L, const Math &R);
    8. private:
    9. int a;
    10. int b;
    11. public:
    12. Math(){}
    13. Math(int a, int b):a(a),b(b)
    14. {}
    15. //算术运算符
    16. const Math operator+(const Math &R) const
    17. {
    18. Math temp;
    19. temp.a = a + R.a;
    20. temp.b = b + R.b;
    21. return temp;
    22. }
    23. const Math operator*(const Math &R) const
    24. {
    25. Math temp;
    26. temp.a = a * R.a;
    27. temp.b = b * R.b;
    28. return temp;
    29. }
    30. const Math operator/(const Math &R) const
    31. {
    32. Math temp;
    33. temp.a = a / R.a;
    34. temp.b = b / R.b;
    35. return temp;
    36. }
    37. const Math operator%(const Math &R) const
    38. {
    39. Math temp;
    40. temp.a = a % R.a;
    41. temp.b = b % R.b;
    42. return temp;
    43. }
    44. //关系运算符
    45. bool operator<(const Math &R) const
    46. {
    47. if(a < R.a && b < R.b)
    48. {
    49. return true;
    50. }else {
    51. return false;
    52. }
    53. }
    54. bool operator==(const Math &R) const
    55. {
    56. if(a == R.a && b == R.b)
    57. {
    58. return true;
    59. }else {
    60. return false;
    61. }
    62. }
    63. bool operator<=(const Math &R) const
    64. {
    65. if(a <= R.a && b <= R.b)
    66. {
    67. return true;
    68. }else {
    69. return false;
    70. }
    71. }
    72. bool operator>=(const Math &R) const
    73. {
    74. if(a >= R.a && b >= R.b)
    75. {
    76. return true;
    77. }else {
    78. return false;
    79. }
    80. }
    81. //赋值运算符
    82. Math &operator+=(const Math &R)
    83. {
    84. a += R.a;
    85. b += R.b;
    86. return *this;
    87. }
    88. Math &operator*=(const Math &R)
    89. {
    90. a *= R.a;
    91. b *= R.b;
    92. return *this;
    93. }
    94. Math &operator/=(const Math &R)
    95. {
    96. a /= R.a;
    97. b /= R.b;
    98. return *this;
    99. }
    100. Math &operator%=(const Math &R)
    101. {
    102. a %= R.a;
    103. b %= R.b;
    104. return *this;
    105. }
    106. void show()
    107. {
    108. cout << "a = " << a << " b = " << b << endl;
    109. }
    110. };
    111. const Math operator-(const Math &L, const Math &R)
    112. {
    113. Math temp;
    114. temp.a = L.a - R.a;
    115. temp.b = L.b - R.a;
    116. return temp;
    117. }
    118. bool operator>(const Math &L, const Math &R)
    119. {
    120. if(L.a > R.a && L.b > R.b)
    121. {
    122. return true;
    123. }else {
    124. return false;
    125. }
    126. }
    127. Math &operator-=(Math &L, const Math &R)
    128. {
    129. L.a -= R.a;
    130. L.b -= R.b;
    131. return L;
    132. }
    133. int main()
    134. {
    135. //算术运算符
    136. Math m1(99,20);
    137. Math m2(10,12);
    138. Math m3 = m1 + m2;
    139. Math m4 = m1 - m2;
    140. Math m5 = m1 * m2;
    141. Math m6 = m1 / m2;
    142. Math m7 = m1 % m2;
    143. m3.show();
    144. m4.show();
    145. m5.show();
    146. m6.show();
    147. m7.show();
    148. cout << "---------------------------------------" << endl;
    149. //关系运算符
    150. if(m1 < m2){
    151. cout << "m1 < m2" << endl;
    152. }else if(m1 > m2){
    153. cout << "m1 > m2" << endl;
    154. }else if(m1 == m2){
    155. cout << "m1 == m2" << endl;
    156. }
    157. //赋值运算符
    158. cout << "---------------------------------------" << endl;
    159. m1 += m2;
    160. m1.show();
    161. return 0;
    162. }

  • 相关阅读:
    Linux由hello.c生成a.out整个过程
    Qt 构建 重新构建 运行及qmake作用,Qt项目构建流程
    地方(少数民族)节假日
    DNS域名解析过程剖析
    Zookeeper:实现“通知协调”的 Demo
    Kafka客户端Java代码使用
    从容器化到资源池化,数栈云原生技术实践探索之路
    Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)
    仿京东拼多多商品分类页-(RecyclerView悬浮头部实现、xml绘制ItemDecoration)
    Linux命令(94)之history
  • 原文地址:https://blog.csdn.net/darkestdying/article/details/133753898