C++学习记录-面向对象-运算符重载3-递增递减运算符重载
C++学习记录-面向对象-运算符重载3-递增递减运算符重载
先来创建一个类
1 | class level { |
一、递增递减运算符
-
递增运算符++
(1).前置递增:先递增,再取值。因此前置递增应该返回递增后的值。为了实现可以连续前置递增,应该返回一个引用。若返回的是一个类,连续递增时不会影响实际的值(类似于值传递和引用传递的关系)
返回引用而不返回指针是为了不要解引用,方便。
示例:
1
2
3
4
5
6level& operator++()
{
lv++;
return *this;
}
//返回了level类的一个引用。分析:由于该函数不需要传入参数,则利用解引用this指针来返回
(2).后置递增:先取值,再递增。因此应该先创建一个临时对象储存,实现递增后返回临时对象。
此处应该返回的是一个值。因为函数执行完后临时对象就会被销毁,不可以返回引用,否则是非法操作。
示例:
1
2
3
4
5
6level operator++(int)
{
level temp = *this;
lv++;
return temp;
}分析:不可以用返回值来重载函数,因此使用占位参数int来区分前置后置
-
递减运算符–
同理可得:
示例:
1
2
3
4
5
6
7
8
9
10
11
12level& operator--()
{
lv--;
return *this;
}//前置递减
level operator--(int)
{
level temp = *this;
lv--;
return temp;
}//后置递减
二、在全局函数区进行重载
需要传入参数
1 | level& operator--(level &a) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





