C++中自增运算符(++)与自减(--)运算符的重载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++中自增运算符(++)与自减(--)运算符的重载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2246字,纯文字阅读大概需要4分钟。
内容图文
![C++中自增运算符(++)与自减(--)运算符的重载](/upload/InfoBanner/zyjiaocheng/743/f23a44434102423e93805504fab874a6.jpg)
C++中自增运算符(++)与自减(--)运算符的重载
运算符重载
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
运算符重载需要以下函数
/*类名*/ operator /*要重载的运算符*/();//函数声明
/*类名*/ /*类名*/::operator /*要重载的运算符*/() //函数主体
{
//具体操作
}
自增运算符(++)与自减(–)运算符的重载
下面以一道题为例,来理解自增运算符(++)与自减(–)运算符的重载。
题目:编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point& operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。
特别注意:由于编译器必须能够识别出前缀自增与后缀自增,人为规定用 operator++() 和 operator–() 重载前置运算符,用 operator++(int) 和 operator–(int) 重载后置运算符,在这里的 int 并没有什么实际的意义,仅仅是为了区分重载的是前置的形式还是后置的形式。
根据上述运算符重载的函数,代码如下
#include<iostream>
using namespace std;
class Point
{
private:
int _x;
int _y;
public:
Point(int x = 0, int y = 0) { _x = x; _y = y; }
Point operator ++();//前置型
Point operator ++(int);//后置型
Point operator --();//前置型
Point operator --(int);//后置型
void Display();
Point pp() { _x++; _y++; return *this; }
Point mm() { _x--; _y--; return *this; }
~Point(){}
};
Point Point::operator ++() //前置型自增
{
return pp();
}
Point Point::operator ++(int)//后置型自增
{
Point p = *this;
pp();
return p;
}
Point Point::operator --()//前置型自减
{
return mm();
}
Point Point::operator --(int)//后置型自减
{
Point p = *this;
mm();
return p;
}
void Point::Display()
{
cout << "( " << _x << " , " << _y << " )" << endl;
}
int main()
{
Point a(1, 2);
Point b;
b = ++a;
b.Display();
b = a++;
b.Display();
b = --a;
b.Display();
b = a--;
b.Display();
}
运行结果:
结果分析
前提
1.a的初始坐标值为(1,2)。
2.自增、自减运算对x、y同时起作用。
结果分析
1.第一步,前置自增运算,先自增,再赋值给b。操作结束后a为(2,3),b为(2,3)。
2.第二步,后置自增运算,先赋值给b,后自增。操作结束后a为(3,4),b为(2,3)。
3.第三步,前置自减运算,先自减,再赋值给b。操作结束后a为(2,3),b为(2,3)。
4.第四步,后置自减运算,先赋值给b,后自减,操作结束后a为(1,2),b为(2,3)。
内容总结
以上是互联网集市为您收集整理的C++中自增运算符(++)与自减(--)运算符的重载全部内容,希望文章能够帮你解决C++中自增运算符(++)与自减(--)运算符的重载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。