这两种运算符++重载有什么区别 还有为什么参数是int 不是对象

2025-04-05 12:01:23
推荐回答(1个)
回答1:

前++运算符组成的表达式是左值,后++运算符组成的表达式为右值,所以它们的重载函数是有所区别的:
1. 原型不同:
前++运算符重载函数原型为:

Pixel& operator++(); //返回类型为引用,没有int型形参

后++运算符重载函数原型为:

Pixel operator++(int); //返回类型为对象,有int型形参(该形参并不使用,只是为了区别于前++)
2. 函数体中处理方式不同:
前++:直接对*this对象进行“+1”操作,返回*this对象。
后++:先创建*this对象的副本(比如t),对*this对象进行“+1”操作,返回副本t。