#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对象进行的++操作啊
解决方案
由于++操作符本身无论前置或者后置都不接受任何参数,所以如果不做干预的话,无论前置还是后置的声明都是一样的。
void operator++();
这样子肯定不行啊,前置和后置的操作符重载应该区分开。
所以C++规定后置的操作符重载接受一个int作为参数(但是没有用):
void operator++(int);
这样子就可以区分开两个重载了。
不用问这个为什么是int,别的都不行,因为就是这么规定的。