重载后置运算符--
在“ cout << num-- << endl;” 时输出了需要的值,
但在 “ cout<< "num-- =" << num-- << endl ” 时输出了地址
重载前置运算符的时候就没有这样的问题。
怎样能使后置运算符重载后 cout<< "num-- =" << num-- << endl 也能实现输出值的效果?
代码和结果如下:
#include <iostream>
using namespace std;
class number
{
friend ostream &operator<<(ostream &cout, number &num);
public:
number()
{
m_a = 10;
}
number&operator--()
{
m_a--;
return *this;
}
number& operator--(int)
{
number temp= *this;
m_a--;
return temp;
}
private:
int m_a;
};
ostream &operator<<(ostream &cout,number &num)
{
cout << num.m_a ;
return cout;
}
void test1()
{
number num;
cout << "num =" << num << endl;
cout << "--num =" << --num << endl;
cout << "num =" << num << endl;
}
void test2()
{
number num;
cout << "num =" << num << endl;
cout << "num-- =" << num-- << endl;
cout << "num =" << num << endl;
}
int main()
{
test1();
test2();
system("pause");
return 0;
}