C++ ++ 和 -- 运算符重载


递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。

下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。

  1. #include <iostream>
  2. using namespace std;
  3. class Time
  4. {
  5. private:
  6. int hours; // 0 到 23
  7. int minutes; // 0 到 59
  8. public:
  9. // 所需的构造函数
  10. Time(){
  11. hours = 0;
  12. minutes = 0;
  13. }
  14. Time(int h, int m){
  15. hours = h;
  16. minutes = m;
  17. }
  18. // 显示时间的方法
  19. void displayTime()
  20. {
  21. cout << "H: " << hours << " M:" << minutes <<endl;
  22. }
  23. // 重载前缀递增运算符( ++ )
  24. Time operator++ ()
  25. {
  26. ++minutes; // 对象加 1
  27. if(minutes >= 60)
  28. {
  29. ++hours;
  30. minutes -= 60;
  31. }
  32. return Time(hours, minutes);
  33. }
  34. // 重载后缀递增运算符( ++ )
  35. Time operator++( int )
  36. {
  37. // 保存原始值
  38. Time T(hours, minutes);
  39. // 对象加 1
  40. ++minutes;
  41. if(minutes >= 60)
  42. {
  43. ++hours;
  44. minutes -= 60;
  45. }
  46. // 返回旧的原始值
  47. return T;
  48. }
  49. };
  50. int main()
  51. {
  52. Time T1(11, 59), T2(10,40);
  53. ++T1; // T1 加 1
  54. T1.displayTime(); // 显示 T1
  55. ++T1; // T1 再加 1
  56. T1.displayTime(); // 显示 T1
  57. T2++; // T2 加 1
  58. T2.displayTime(); // 显示 T2
  59. T2++; // T2 再加 1
  60. T2.displayTime(); // 显示 T2
  61. return 0;
  62. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. H: 12 M:0
  2. H: 12 M:1
  3. H: 10 M:41
  4. H: 10 M:42