C++: 重载前缀运算符与重载后缀运算符(以++为例)
程序员文章站
2022-05-03 20:20:54
C++: 重载前缀运算符与重载后缀运算符(以++为例)
标签: C++ 重载运算符 前缀运算符 后缀运算符
by 小威威
在C++中如何区分重载前缀运算符与重载后缀运算符...
C++: 重载前缀运算符与重载后缀运算符(以++为例)
标签: C++ 重载运算符 前缀运算符 后缀运算符
by 小威威
在C++中如何区分重载前缀运算符与重载后缀运算符呢?不难发现,重载后缀运算符带有形参int而重载前缀运算符没有。这个形参的作用只是为了区分二者,并没有实际的意义。
我们知道,a++与++a是有区别的,如c = a++ 与 c = ++a,两个c的值是不同的。因为前者是先将a赋给变量c,然后再自增,而后者是a先自增,然后再将自增后的结果赋给变量c。
因此,因为这点微妙的区别,重载这两个运算符的代码便有有一定的区别,现代码如下:
// // main.cpp // time // // Created by apple on 16/2/21. // Copyright (c) 2016年 apple. All rights reserved. // # include using namespace std; class Time { private : int minutes; int hours; public : Time() { minutes = 0; hours = 0; } Time(int h, int m) { minutes = m; hours = h; } void display() { cout << " H " << hours << " M " << minutes << endl; } Time operator ++ () { ++minutes; if (minutes >= 60) { minutes -= 60; hours += 1; } return Time(hours, minutes); \\ 返回自增后的值 }; Time operator ++ (int) { Time T(hours, minutes); \\ 保存原来的值 minutes++; if (minutes >= 60) { minutes -= 60; hours += 1; } return T; \\ 返回自增前的值 }; }; int main(void) { Time T1(11, 59), T2(10, 40), T3, T4; ++T1; T1.display(); ++T1; T1.display(); ++T2; T2.display(); T2++; T2.display(); T3 = T2++; T3.display(); T4 = ++T1; T4.display(); return 0; } 输出结果: H 12 M 0 H 12 M 1 H 10 M 41 H 10 M 42 H 10 M 42 H 12 M 2
以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!
上一篇: Python2实现的图片文本识别功能详解
下一篇: Python常见的错误和异常讲解