这个里面需要注意的是对于双目运算符,像是加号,如果是复数加整数是一种情况,而整数加复数又是另一种情况,所以需要重定义两次。
而对于单目运算符,如果是前缀的,直接重定义就可以了,但是如果是后缀的,我们在声明的时候,加上一个 int 就行了。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102#include <iostream> using namespace std; class Date { public : Date() { year=0; month=0; day=0; } Date(int y,int m,int d) { year = y; month = m; day = d; } void display() { cout<<year<<"/"<<month<<"/"<<day<<endl; } friend Date operator+(int i, Date c); friend Date operator+(Date c, int i); Date operator++(); Date operator++(int); private: int year,month,day; }; Date Date::operator++() { if (day+1>30) { day %= 30; if (month+1>12) { month %= 12; year++; } } else day++; return *this; } Date Date::operator++(int) { Date temp(*this); if (day+1>30) { day %= 30; if (month+1>12) { month %= 12; year++; } } else day++; return temp; } Date operator+(int i,Date c) { int year_add = i / 360; int month_add = i / 30; int day_add = i % 30; c.year += year_add; c.month = c.month + month_add % 12; if (c.month>12) c.month -= 12; c.day = c.day+day_add % 30; if (c.day>30) c.day -= 30; return c; } Date operator+(Date c,int i) { int year_add = i / 360; int month_add = i / 30; int day_add = i % 30; c.year += year_add; c.month = c.month + month_add % 12; if (c.month>12) c.month -= 12; c.day = c.day+day_add % 30; if (c.day>30) c.day -= 30; return c; } int main() { Date a(2018,3,10),b; int num=1000; b=a+num; b.display(); ++b; b.display(); a = b++; a.display(); b.display(); system("pause"); return 0; }
转载于:https://www.cnblogs.com/xyqxyq/p/10211354.html
最后
以上就是着急鲜花最近收集整理的关于c++类的单目和双目运算符的重定义的全部内容,更多相关c++类内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复