Bet*_*moo 10 c++ templates struct class operator-overloading
如何区分重载operator ++的2个版本?
const T& operator ++(const T& rhs)
Run Code Online (Sandbox Code Playgroud)
哪一个?
i++;
++i;
Run Code Online (Sandbox Code Playgroud)
Geo*_*che 11
对于非成员版本,具有一个参数的函数是前缀,而具有两个参数的函数和第二个int是后缀:
struct X {};
X& operator++(X&); // prefix
X operator++(X&, int); // postfix
Run Code Online (Sandbox Code Playgroud)
对于成员版本,零参数版本是前缀,单参数版本int是后缀:
struct X {
X& operator++(); // prefix
X operator++(int); // postfix
};
Run Code Online (Sandbox Code Playgroud)
int后缀运算符调用的参数值为零.
Dan*_*nas 10
这些运算符是一元的,即它们不采用右侧参数.
至于你的问题,如果你真的必须重载这些操作符,对于preincrement使用签名const T& operator ++(),并为后增量,const T& operator(int).int参数是一个虚拟的.