在c++里面重载自增运算符,因此存在前缀后缀的关系,所以用带一个int
参数的方法表示后缀,以和前缀区别开来。
// 前缀和后缀运算符重载
// 以++为例
#include<iostream>
class SimpleClass
{
private:
int apple;
public:
SimpleClass(int apple_) :apple(apple_) {}
SimpleClass operator++(int); // 后缀
SimpleClass operator++(); // 前缀
void displayAppleNumber() {
std::cout << this->apple << std::endl;
}
};
SimpleClass SimpleClass::operator++(int) {
SimpleClass ret = *this;
this->apple++;
return ret;
}
SimpleClass SimpleClass::operator++() {
SimpleClass ret = *this;
++this->apple;
return ret;
}
int main()
{
SimpleClass sc(5), sc1(0), sc2(0);
sc1 = sc++;
sc2 = ++sc;
sc1.displayAppleNumber();
sc2.displayAppleNumber();
return 0;
}
现在sc1
和sc2
都是由sc
初始化来的,区别就只有前缀和后缀,以我们的经验来看sc1
的apple
数量应该是5,sc2
的apple
数量应该是6。结果也确实是这样的: