运算符重载是C++中一个很有用的特性,允许程序员对自定义的类进行运算符重载,使自定义的类能够像int等基本数据类型一样使用。在运算符重载中,自增和自减运算符的重载因为其操作数的问题而呈现出与其它运算符重载不一样的特性。
先来看一个自增自减运算符重载的例子
#include <iostream>
#include <iomanip>
#include <typeinfo>
using namespace std;
class INT {
friend ostream& operator<<(ostream& os, const INT& i);
public:
INT(int i) : m_i(i) {}
INT(const INT& I) : m_i(I.m_i) {}
INT& operator++()
{
++(this->m_i);
return *this;
}
const INT operator++(int)
{
const INT tmp(*this);
++(*this);
return tmp;
}
INT& operator--()
{
--(this->m_i);
return *this;
}
const INT operator--(int)
{
const INT tmp(*this);
--(*this);
return tmp;
}
int& operator*() const
{
cout << boolalpha << (typeid(con