图上的未经处理的异常是怎么回事?之前有人说是<<那的第二个&要去掉,可是明显不行,那样cout会因为局部不能进行两次--.帮忙解答一下这里的问题到底是什么呢谢谢!

c++递减运算符重载出现的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2022-03-22 17:40关注
后置++改成下面的:
my operator --(int) { my temp ; temp.m_num = this->m_num; this->m_num--; //这里本类的要-- return temp; //返回的是原来的值 }
运行结果:
完整代码:
#include <iostream> using namespace std; class my { friend ostream& operator<<(ostream& cout, my myint); public: my() { m_num = 0; } my& operator --() { m_num--; return *this; } my operator --(int) { my temp ; temp.m_num = this->m_num; this->m_num--; //这里本类的要-- return temp; //返回的是原来的值 } private: int m_num; }; ostream& operator<<(ostream& cout, my myint) { cout << myint.m_num; return cout; } void test01() { my myint; cout << --(--myint) << endl; cout << myint << endl; } void test02() { my youint; cout << youint-- << endl; cout << youint << endl; } int main() { //test01(); test02(); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用