#include <iostream>
using namespace std;
struct Date
{
void operator++()
{
cout << "oprator++()" <<endl;
}
void operator++(int)
{
cout << "oprator++(int)" <<endl;
}
};
int main()
{
Date date;
++date;
date++;
}
为什么++date对应的是++(),而不是++(int)
然后为什么++(int)里面只能是int,试了float和Date都不行,我明明是用的Date对象进行的++操作啊
由于++操作符本身无论前置或者后置都不接受任何参数,所以如果不做干预的话,无论前置还是后置的声明都是一样的。
这样子肯定不行啊,前置和后置的操作符重载应该区分开。
所以C++规定后置的操作符重载接受一个int作为参数(但是没有用):
这样子就可以区分开两个重载了。
不用问这个为什么是int,别的都不行,因为就是这么规定的。