• 国庆day4


    1. #include
    2. using namespace std;
    3. class Complex
    4. {
    5. private:
    6. int real; //实部
    7. int vir; //虚部
    8. public:
    9. Complex() {}
    10. Complex(int r, int v):real(r), vir(v) {} //有参构造
    11. //定义展示函数
    12. void show()
    13. {
    14. if(vir>=0)
    15. {
    16. cout<" + "<"i"<
    17. }else
    18. {
    19. cout<"i"<
    20. }
    21. }
    22. //全局函数版实现加运算符重载
    23. friend const Complex operator+ (const Complex &L, const Complex &R);
    24. //成员函数版实现运算符重载
    25. const Complex operator- ( const Complex &R)const
    26. {
    27. Complex c;
    28. c.real = this->real - R.real;
    29. c.vir = this->vir - R.vir;
    30. return c;
    31. }
    32. //成员函数版实现关系运算符的重载:实部>实部 && 虚部>虚部
    33. bool operator>(const Complex &R)const
    34. {
    35. return this->real>R.real&&this->vir>R.vir;
    36. }
    37. //重载中括号运算符
    38. int & operator[](int index)
    39. {
    40. if(index == 0)
    41. {
    42. return real; //返回实部
    43. }else if(index == 1)
    44. {
    45. return vir; //返回虚部
    46. }
    47. }
    48. //重载+=运算符:实部+=实部 虚部+=虚部
    49. Complex & operator+=(const Complex &R)
    50. {
    51. this->real += R.real;
    52. this->vir += R.vir;
    53. return *this; //返回自身的引用
    54. }
    55. //重载负号运算符: 实部= -实部, 虚部 = -虚部
    56. Complex operator-()
    57. {
    58. Complex c;
    59. c.real = -this->real;
    60. c.vir = -this->vir;
    61. return c;
    62. }
    63. //重载前置自增运算符重载函数:实部 = 实部+1 虚部=虚部+1
    64. Complex &operator++()
    65. {
    66. ++this->real;
    67. ++this->vir;
    68. return *this;
    69. }
    70. //重载后置自增运算符重载函数:实部 = 实部+1 虚部=虚部+1
    71. Complex operator++(int)
    72. {
    73. Complex c;
    74. c.real = this->real++;
    75. c.vir = this->vir++;
    76. return c;
    77. }
    78. //将全局函数版实现的输出运算符重载函数设置成友元
    79. friend ostream &operator<<(ostream &L, Complex &c);
    80. //重载小括号运算符,做一个仿函数
    81. void operator()(string s)
    82. {
    83. cout<
    84. }
    85. //重载小括号运算符,做一个仿函数
    86. void operator()()
    87. {
    88. cout<<520<<" "<<1314<
    89. }
    90. //重写类型转换运算符
    91. operator int()
    92. {
    93. return real; //将该数据类型向int类型转换后,使用的是real的值
    94. }
    95. };
    96. //全局函数版实现加号运算符重载:实部+实部 虚部+虚部
    97. const Complex operator+ (const Complex &L, const Complex &R)
    98. {
    99. //定义一个临时空间
    100. Complex c;
    101. c.real = L.real + R.real;
    102. c.vir = L.vir + R.vir;
    103. return c;
    104. }
    105. //重载输出运算符函数
    106. ostream &operator<<(ostream &L, Complex &c)
    107. {
    108. if(c.vir>=0)
    109. {
    110. L<" + "<"i"<
    111. }else
    112. {
    113. L<"i"<
    114. }
    115. //返回左操作数自身的引用
    116. return L;
    117. }
    118. int main()
    119. {
    120. Complex c1(5,3);
    121. c1.show(); //5+3i
    122. Complex c2(2,-1);
    123. c2.show(); //2-1i
    124. Complex c3 = c1-c2; //调用加法运算符重载函数 c1.operator-(c2)
    125. c3.show(); //3+4i
    126. if(c3 > c2) //调用关系运算符重载函数
    127. {
    128. cout<<"yes"<
    129. }else
    130. {
    131. cout<<"no"<
    132. }
    133. c3[0] = 5; //将实部进行修改成5,调用中括号运算符重载
    134. c3.show(); //5+4i
    135. c3 += c2; //调用+=运算符重载函数
    136. c3.show(); //7+3i
    137. Complex c4 = -c3; //调用-号运算符重载
    138. c4.show(); //-7 - 3i
    139. c3.show(); //7+3i
    140. Complex c5 = ++c3; //调用前置自增运算符重载函数
    141. c5.show(); //8+4i
    142. c3.show(); //8+4i
    143. Complex c6 = c3++; //调用后置自增运算符重载函数
    144. c6.show(); //8+4i
    145. c3.show(); //9+5i
    146. cout<//cout.operator<<(c3)
    147. c3("hello world"); //c3.operator()("hello world");
    148. c3();
    149. int num = (int)c3; //调用类型转换运算符重载函数
    150. cout<<"num = "<
    151. return 0;
    152. }

  • 相关阅读:
    Gopsutil/Process常用进程监控资源信息
    npm WARN npm npm does not support Node.js v12.18.3
    【数据结构-进阶】二叉搜索树
    行为型模式-策略模式
    判断一个数是否偶数(深度思考)
    在模块中使用外部依赖的类
    汽车托运汽车会产生公里数吗?
    python Calendar日历模块函数介绍
    基于Springboot+Vue的社区医院管理系统
    数据结构——二叉搜索树的实现、删除(最大值和最小值、最大值和最小值)
  • 原文地址:https://blog.csdn.net/weixin_69452640/article/details/133561185