超越nb 2021-09-03 12:14 采纳率: 57.1%
浏览 53
已结题

c++基础问题,运算符重载



```c++
#include<iostream>
using namespace std;

class Myint
{
public:
    friend ostream&operator<<(ostream &cout, Myint mint);
    Myint()
    {
        m_H = 8;
    }
    //前置重载
    Myint& operator--()
    {
        --m_H;
        return*this;
    }
    //后置重载
    Myint operator--(int)
    {
        Myint temp=*this;
        m_H--;
        return temp;
    }

private:
    int m_H;
};
ostream&operator<<(ostream &cout, Myint min)
{
    cout << min.m_H;
    return cout;
}
void test01()
{
    Myint mint;
    cout <<(mint--)--<< endl;//为什么我的结果是(8,7,6)不应该是(8,6,5)吗,两次自减只用了一次,为什么
    cout << mint-- << endl;
    cout << mint-- << endl;

}
int main()
{
    test01();
    system("pause");
    return 0;
}

```

  • 写回答

1条回答 默认 最新

  • baidu_30233079 2021-09-03 14:56
    关注

    你后置重载25行那里返回的是一个新的对象,所以有一次--操作是对那个新对象。39行你原始的mint其实就是减了一次

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 修改了问题 9月3日
  • 创建了问题 9月3日