class INT
public:
INT(int i) : m_i(i) {}
//prefix ++
INT& operator++()
{
(this->m_i)++;
return *this;
}
//postfix ++, 这里加上const, 返回值为temp对象,temp离开函数作用域不被销毁。
const INT operator++(int)
{
INT temp = *this;
++(*this);
return temp;
}
//prefix --
INT& operator--()
{
--(this->m_i);
return *this;
}
//postfix --, 返回值为temp对象
const INT operator--(int)
{
INT temp = *this;
--(*this);
return temp;
}
//解引用, 结果可以被修改,所以返回值为引用类型
int& operator*() const
{
return (int&)m_i;
}
private:
int m_i;
};
ostream& operator<<(ostream& os, const INT& i)
{
os << '[' << i.m_i << ']' << endl;
return os;
{
//友元函数,可以访问类私有成员。返回值为引用类型,因为有时需要这样的操作: cout << INT << XXX << YYY;
public:
INT(int i) : m_i(i) {}
//prefix ++
INT& operator++()
{
(this->m_i)++;
return *this;
}
//postfix ++, 这里加上const, 返回值为temp对象,temp离开函数作用域不被销毁。
const INT operator++(int)
{
INT temp = *this;
++(*this);
return temp;
}
//prefix --
INT& operator--()
{
--(this->m_i);
return *this;
}
//postfix --, 返回值为temp对象
const INT operator--(int)
{
INT temp = *this;
--(*this);
return temp;
}
//解引用, 结果可以被修改,所以返回值为引用类型
int& operator*() const
{
return (int&)m_i;
}
private:
int m_i;
};
ostream& operator<<(ostream& os, const INT& i)
{
os << '[' << i.m_i << ']' << endl;
return os;
}
int _tmain(int argc, _TCHAR* argv[])
{
INT in(8);
cout << in++ << endl; //8
cout << ++in << endl; //10
cout << --in << endl; //9
cout << in-- << endl; //9
cout << *in << endl; //8
}