永发信息网

重载增量运算符 前增量与后增量 之中遇到的问题

答案:1  悬赏:0  手机版
解决时间 2021-02-18 13:34
  • 提问者网友:浮克旳回音
  • 2021-02-18 01:21
求大家看一下这个程序。这两个重载的增量函数中,后增量的(int)在main函数里面哪里体现了?
为什么执行++n就自动调用前一个而n++就后一个。。。?
还有,就算承认了这些 最后一句的(n++)++为什么最后值还是加了1?明明后缀之后得到的还是原来的值才对啊。这个操作应该只是把同一个n后缀++一次在把原来的n拿回来在后缀++一次吧?
为什么值还有增长。这块真的好模糊 求大神梳理。

#include<iostream>
using namespace std;
class Increase{
public:
Increase(int x):value(x){}
Increase & operator++(); //前增量
Increase operator++(int); //后增量
void display(){ cout <<"the value is " <<value <<endl; }
private: int value;
};
Increase & Increase::operator++()
{ value++; //先增量
return *this; } //再返回原对象
Increase Increase::operator++(int)
{ Increase temp(*this); //临时对象存放原有对象值
value++; //原有对象增量修改
return temp; } //返回原有对象值
void main()
{ Increase n(20);
n.display();
(n++).display();
n.display();
++n;
n.display();
++(++n);
n.display();
(n++)++;
n.display();
}
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-02-18 01:40
你的测试方法不太好,将主函数改为:
void main()
{
Increase a(10),b(10),c(0),d(0);
c=++a;
d=b++;
a.display();
c.display();
b.display();
d.display();
cout <<"======================\n";
Increase a1(10),b1(10),c1(0),d1(0);
c1=++ ++a1;
d1=b1++ ++;
a1.display();
c1.display();
b1.display();
d1.display();
}
这样,从运行结果就能看出前++和后++的差别了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯