社区
C语言
帖子详情
++问题
whirl
2003-08-19 12:43:28
a++ = b++;
编译过不了而 ++a = b++;则行,为什么?
...全文
22
16
打赏
收藏
++问题
a++ = b++; 编译过不了而 ++a = b++;则行,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cdxiaogan
2003-08-20
打赏
举报
回复
up
ppm07
2003-08-20
打赏
举报
回复
to plainsong:
小弟认为作为一个类的设计者,所重载的类的所有操作符都应该符合基本类型的操作规则,即基本类型能通得过的表达式换成类的表达式也应该能通得过,反之亦然。
dofty
2003-08-19
打赏
举报
回复
a++先将a的值保存,再将a的值加1,返回保存的a值,所以不可赋值
++a将a的值加1,然后返回a的引用,所以可以赋值
sandrowjw
2003-08-19
打赏
举报
回复
a++返回的不是l-value,应该是一个临时变量吧。
oopig
2003-08-19
打赏
举报
回复
这个问题很好,up一下。
frank026
2003-08-19
打赏
举报
回复
我同意plainsong的说法,因为a++返回的是一个值,而不是变量,所以不能赋值,他不是l_value,而++a返回的是变量a(自增后),他有地址,所以可以赋值
短歌如风
2003-08-19
打赏
举报
回复
dofty所说的是对的,正是因为dofty所说的原因,才导致sandrowjw所说的结果。不过都只适用于基本类型,因为class的operator的返回值是由编写者决定的(除类型转换操作符外)。
dofty
2003-08-19
打赏
举报
回复
我所说的和sandrowjw(伊卡洛斯) 并不相左返回的类型不同也就决定了它是不是l-value
sandrowjw
2003-08-19
打赏
举报
回复
哦,是这样,是我没仔细想。
亮剑_
2003-08-19
打赏
举报
回复
a++不是左值,而++a则是
ppm07
2003-08-19
打赏
举报
回复
public:
int a;
A& operator++()
{ return ++a,*this; }
const A operator++(int)
{ return ++a,*this; }
};
这样改的话就和int一致了。都通不过编译。
jack_wq
2003-08-19
打赏
举报
回复
为什么一定要这么做,费力不讨好!
紫郢剑侠
2003-08-19
打赏
举报
回复
确实有意思...
sandrowjw
2003-08-19
打赏
举报
回复
很有趣,请看下面的代码:
class A
{
public:
int a;
A& operator++()
{ return ++a,*this; }
A operator++(int)
{ return ++a,*this; }
};
然后
A a;
a.a = 0;
A& b = a++;//如果把A改成int则不行
cout<<b.a<<endl;
输出的是1,系统的确给b分配了空间,而且它的地址就在a的后面,可以加一个copy构造函数,会发现它被调用了两次。但是对于int则没有这种设定,我是在vc下面试的,看来该回去查查看这是不是符合C++规范。
maomaomaomao
2003-08-19
打赏
举报
回复
a++是先取出a的值再将值自增,而++a是将a自增后再放回原地址
made_in_
2003-08-19
打赏
举报
回复
dofty(dofty)所说的理由并不成立.sandrowjw(伊卡洛斯)是对的.
a++返回的不是一个l-value,所以无法给其赋值.
++a返回的则是一个可以赋值的l-value.
用VB6+GDI+开发交互式CAD系统
建议先自行对源码进行阅读分析,然后带着
问题
去听课,这样学习效率比较高,效果比较好一些。 课程最终提供的内容和服务: PPT+源码+视频讲解+持续升级 /****课程第一节课为免费课,演示了系统的主要功能。可以用手机...
VC#.NET+GDI+开发交互式CAD系统
建议先自行对源码进行阅读分析,然后带着
问题
去听课,这样学习效率比较高,效果比较好一些。 课程最终提供的内容和服务: PPT+源码+视频讲解+持续升级 /****课程第一节课为免费课,演示了系统的主要功能。可以用手机...
Vue+SpringBoot+Shiro+通用Mapper
随着互联网的发展,现在的管理平台都基于前后端分离。本课程将用当下最流行的前端框架Vue,后台框架SpringBoot,和Shiro实现权限管理的基本功能(用户管理 角色管理 权限管理) 采用Mybatis和通用Mapper实现数据库的...
2021新版HTML5+CSS3+JS+Vue精细化教程
@特色: 1、理论实操一体化,不仅学会理论,更重要的是会实际操作,避免学了还是不会做的尴尬
问题
3、每个知识点都设计了符合实际开发的经典案例,通过案例来强化理论知识 3、每个章节都有高强度的作业和练习,再也...
Cordova+React+OnsenUI+Redux新闻App开发实战教程
Cordova+React+OnsenUI+Redux新闻App开发实战视频培训课程以真实的案例讲解Cordova开发的流程设计,React+Redux的架构理念设计新闻App的数据流管理,整体的技术栈包括混合应用技术架构、cordova平台实战(视频教程)...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章