cpp不支持多次后置++,因为后置++返回的是++操作前的原始数据用temp存储是一个临时数据(函数return后生命周期到了),也就是说返回的是一个右值,而++操作是在一个存在的对象上(也可以是基础类型)操作不能对右值操作所以会报错
class MyClass {
int value;
public:
MyClass(int v) : value(v) {}
// 后置++操作符重载
MyClass operator++(int) {
MyClass temp(*this); // 创建临时对象存储当前值
++value; // 修改对象的值
return temp; // 返回修改前的值(临时对象)
}
};
cpp支持前置++,前置++返回的是++操作后的数据,通常return该数据的引用
也就是说传回的数据是已经存在的对象是个左值,所以你对一个已有对象多次前置++操作是没有问题的
class MyClass {
int value;
public:
MyClass(int v) : value(v) {}
// 前置++操作符重载
MyClass& operator++() {
++value;
return *this; // 返回当前对象的引用
}
};
2940





