重载运算符的小问题,重载后用cout<< "文字" << num-- << endl ;会输出地址而不是值,怎么能输出值?

重载后置运算符--
在“ 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;
}

img

img