• 国庆10.03


    运算符重载

    代码

    1. #include <iostream>
    2. using namespace std;
    3. class Num
    4. {
    5. private:
    6. int num1; //实部
    7. int num2; //虚部
    8. public:
    9. Num(){}; //无参构造
    10. Num(int n1,int n2):num1(n1),num2(n2){}; //有参构造
    11. ~Num(){}; //析构函数
    12. const Num operator+(const Num &other)const //加号重载
    13. {
    14. Num a; //定义临时类对象
    15. a.num1 = num1 + other.num1; //实部相加
    16. a.num2 = num2 + other.num2; //虚部相加
    17. return a;
    18. }
    19. bool operator==(const Num &other)const //相等重载
    20. {
    21. //判断实部虚部是否分别相等
    22. if(num1 == other.num1 && num2 == other.num2)
    23. {
    24. return true;
    25. }
    26. else
    27. {
    28. return false;
    29. }
    30. }
    31. Num &operator+=(const Num &other) //加等重载
    32. {
    33. //实部虚部分别加等于
    34. num1 += other.num1;
    35. num2 += other.num2;
    36. return *this;
    37. }
    38. Num &operator++() //重载前置++
    39. {
    40. ++num1;
    41. ++num2;
    42. return *this;
    43. }
    44. Num &operator++(int) //重载后置++
    45. {
    46. num1++;
    47. num2++;
    48. return *this;
    49. }
    50. Num operator-()const //重载-
    51. {
    52. Num temp;
    53. temp.num1 = -num1;
    54. temp.num2 = -num2;
    55. return temp;
    56. }
    57. void init(int n1,int n2) //修改类中的值
    58. {
    59. num1 = n1;
    60. num2 = n2;
    61. }
    62. void show() //展示
    63. {
    64. if(num2 < 0)
    65. {
    66. cout << num1 << num2 << "j" << endl;
    67. }
    68. else
    69. {
    70. cout << num1 << "+" << num2 << "j" << endl;
    71. }
    72. }
    73. };
    74. int main()
    75. {
    76. Num test0; //调用无参构造
    77. Num test1(2,3); //调用有参构造
    78. test0.show(); //调用展示函数
    79. cout << "*********************" << endl;
    80. test0.init(3,2); //调用修改函数
    81. test0.show();
    82. cout << "*********************" << endl;
    83. test0++;
    84. test0.show();
    85. cout << "*********************" << endl;
    86. ++test0;
    87. test0.show();
    88. cout << "*********************" << endl;
    89. if(test0 == test1) // 调用重载的相等函数
    90. {
    91. cout << "true" << endl;
    92. }
    93. else
    94. {
    95. cout << "false" << endl;
    96. }
    97. cout << "*********************" << endl;
    98. test0 += test1; //调用加等于重载函数
    99. test0.show();
    100. test1 = -test0; //调用重载-
    101. cout << "*********************" << endl;
    102. test1.show();
    103. return 0;
    104. }

    运行结果

  • 相关阅读:
    SpringCloud的那些中间件
    C# Winform编程(5)菜单栏和工具栏
    Redis 一个key-value存储系统
    0基础学习PyFlink——模拟Hadoop流程
    json文件数据转存mysql数据工具,安利一波
    机器学习中的决策树算法
    强化学习中SARSA(State-Action-Reward-State-Action)和Q-learning的区别
    使用线程池的10个坑
    多语言商城系统哪个好 三大知名跨境电商厂商对比
    Python机器学习算法入门教程(第三部分)
  • 原文地址:https://blog.csdn.net/weixin_52238362/article/details/133515490