在自学C++到递增运算符重载时
在类中用成员函数实现递增重载,前置没有报错,后置报错说没有合适的运算符
#include <iostream>
#include <string>
using namespace std;
class MyInteger {
friend ostream& operator<<(ostream& cout, MyInteger& p);
public:
MyInteger() {
mNumber = 0;
}
//成员函数重载前置++运算符
MyInteger &operator++() {
mNumber++;//先进行加1
return *this;//再将自身返回,所以返回类型为MyInteger,返回引用是为了一直对一个数据进行递增操作
}
//成员函数重载后置++运算符
MyInteger operator++(int) {
//1、先记录当时的结果
MyInteger temp = *this;
//2、递增
mNumber++;
//3、返回记录的结果
return temp;
}
private:
int mNumber;
};
//重载左移运算符
ostream& operator<<(ostream& cout, MyInteger& p) {
cout << p.mNumber;
return cout;
}
void test01() {
MyInteger myInt;
cout << ++myInt << endl;
}
void test02() {
MyInteger myInt;
cout << myInt++ << endl;
}
int main() {
test02();
return 0;
}
我以为是前置和后置的函数冲突了就把前置重载给注释了,可还是报错,我猜问题是在左移运算符重载代码中
怎么修改可以让test02中的cout不报错那