C++ 一元运算符重载
一元运算符只对一个操作数进行操作,下面是一元运算符的实例:
- 递增运算符( ++ )和递减运算符( -- )
- 一元减运算符,即负号( - )
- 逻辑非运算符( ! )
一元运算符通常出现在它们所操作的对象的左边,比如 !obj、-obj 和 ++obj,但有时它们也可以作为后缀,比如 obj++ 或 obj--。
下面的实例演示了如何重载一元减运算符( - )。
1 #include <iostream>
2 using namespace std;
3
4 class Distance
5 {
6 private:
7 int feet; // 0 到无穷
8 int inches; // 0 到 12
9 public:
10 // 所需的构造函数
11 Distance(){
12 feet = 0;
13 inches = 0;
14 }
15 Distance(int f, int i){
16 feet = f;
17 inches = i;
18 }
19 // 显示距离的方法
20 void displayDistance()
21 {
22 cout << "F: " << feet << " I:" << inches <<endl;
23 }
24 // 重载负运算符( - )
25 Distance operator- ()
26 {
27 feet = -feet;
28 inches = -inches;
29 return Distance(feet, inches); //想想这里为什么是这样
30 }
31 };
32 int main()
33 {
34 Distance D1(11, 10), D2(-5, 11);
35
36 -D1; // 取相反数
37 D1.displayDistance(); // 距离 D1
38
39 -D2; // 取相反数
40 D2.displayDistance(); // 距离 D2
41
42 return 0;
43 }
结果
F: -11 I:-10 F: 5 I:-11