C++中的++操作符和--操作符有前置和后置两种形式,如何来区分呢?
使用operator++()和operator--()来重载前置操作符;
使用operator++(int)和operator--(int)来重载后置操作符,调用时参数int默认值为0.
Code::blocks 13.12下编译通过.
#include <iostream>
using namespace std;
class INT {
friend ostream& operator << (ostream& os, const INT &i);
public:
INT(int i) : m_i(i) {}
//prefix;
INT& operator++() {
++this->m_i;
return *this;
}
//postfix
const INT operator++(int) {
INT tmp = *this;
//调用prefix
++(*this);
return tmp;
}
//prefix
INT& operator--() {
--this->m_i;
return *this;
}
//postfix
const INT operator--(int) {
INT tmp = *this;
--(*this);
return tmp;
}
//dereference
INT& operator*() const {
return (INT&)m_i;
}
private:
int m_i;
};
ostream& operator << (ostream& os, const INT& i)
{
os << '[' << i.m_i << ']';
return os;
}
int main()
{
INT I(7);
cout << I++;
cout << ++I;
cout << I--;
cout << --I;
cout << *I;
return 0;
}