永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-02-18 13:34
求大家看一下这个程序。这两个重载的增量函数中,后增量的(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();
}
最佳答案
你的测试方法不太好,将主函数改为:
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();
}
这样,从运行结果就能看出前++和后++的差别了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑开机后一直显示欢迎使用 这是怎么回事
上海井上新材料有限公司在哪里啊,我有事要去
A公司目前发行在外的股数为1000万股,该公司
小米2s:小米账户设置好后,米中心、应用商店
张家口新城房地产开发有限公司我想知道这个在
【我爸是李刚结果】我爸是李刚案的法院判决结
我打算买一台联想的拯救者i5进取版的笔记本,
东南山在什么地方啊,我要过去处理事情
【清风手游网】两袖清风这个故事歌颂了于谦的
肝和什么相表里
东莞市农村村信用和农村商业银行是一样吗
No&gba模拟器无法读取存档
金牛区贵生干杂店地址有知道的么?有点事想过
该问题为A.义齿制作的问题B.设计错误C.初戴义
哪位用过唯洛辛行吗,去毛彻底吗
推荐资讯
诛仙2宣传片的那个女的是谁啊?
每天惠智慧便利店(阳光路店)怎么去啊,有知道
会计的记账基础包括( )。A.权责发生制B.收
科研用的液体细胞,试剂可以空运吗?哪家公司能
初级精母细胞变成次级精母细胞时A. 染色体数
如果每天晚上不吃饭,喝优乐美奶茶会不会对身
爱在高中第一集出现的鞋子
全兴别墅怎么去啊,有知道地址的么
乌龟好像一直在打喷嚏,不知道怎么回事儿
步步惊情剧情讲的是什么?
三角板上的角都比直角小,对还是错
mercury s108m路由器 怎么设置
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?