运算符重载 前置 ++ 后置++ 问题

fantasyzc 2006-09-29 04:31:36
class A{
float x,y,z;
public:
A(float a=0,float b=0,float c=0){x=a;y=b;z=c;}
A & operator ++(A &t) //为什么要加&
{
t.x++;t.y++;t.z++;
return t;}
A operator ++(A &t,int) //为什么不要加& 而且跟加temp作过度有什么联系;
{
A temp=t;
t.x++;t.y++;t.z++;
return temp;}
};
谢谢啦
...全文
175 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fantasyzc 2006-10-01
  • 打赏
  • 举报
回复
老看书有什么用 不懂或者迷糊的就问 集百家之言才能学到东西不好吗
谢谢大家
lonelyforest 2006-10-01
  • 打赏
  • 举报
回复
晕, 好好看书吧
OOPhaisky 2006-09-29
  • 打赏
  • 举报
回复
A & operator ++(A &t) //为什么要加&
-----------------------------------------
前置++操作符,将当前对象“+1”,然后返回当前对象,如果要进行
A a;
(++a).someMemFun();
之类的操作,所以一定要返回当前对象的引用。


A operator ++(A &t,int) //为什么不要加& 而且跟加temp作过度有什么联系;
-----------------------------------------------------------------------------
后置++操作符,返回一个临时对象(这个临时对象是当前对象的完整拷贝),然后将当前对象“+1”。既然是临时对象,所以没有必要返回引用了,因为它并不是当前对象。(建议:最好返回const A,因为c++中并不推荐修改临时对象)
suhanzhong 2006-09-29
  • 打赏
  • 举报
回复
前置 operator ++()
后置 operator ++(A &)

=====================================================

不要误导!!!
operator ++()
operator ++(int)
飞哥 2006-09-29
  • 打赏
  • 举报
回复
前置 operator ++()
后置 operator ++(A &)
haidaodiege 2006-09-29
  • 打赏
  • 举报
回复
比如:i=0;i++;返回i的值是1,也就是修改过的,所有后置要返回&
而前加返回i值是0,也就是没修改过的,所有需要temp记录i的原值并返回
taodm 2006-09-29
  • 打赏
  • 举报
回复
看effective c++ item 23
ugvihc 2006-09-29
  • 打赏
  • 举报
回复
你可以看一下前缀和后缀++的实现,
一个返回引用,一个返回临时变量;
所以重载的时候也不同。

64,692

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧