关于前++和后++的重载

iamjayo 2009-03-03 10:21:57
前++和后++的重载函数如何写啊?(假设对象操作是整型值。)
...全文
238 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sco_field 2009-03-07
  • 打赏
  • 举报
回复
后++返回的是一个右值,右值是不能赋值的,因此加个const;
而前++返回的是一个左值,是可以赋值的,因此返回一个引用。

[Quote=引用 10 楼 cppupenn 的回复:]
我昨天也法帖问了的。请问,这次后置还加个const是怎么解释?

另外,前置的引用是为啥?

引用 9 楼 hairetz 的回复:
引用 2 楼 muyejingfeng100 的回复:


整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
*this += 1;
return *this;
}
后置++:
const A operator ++(int)
{
A temp = *this;
++(*this);
return temp;
}

2楼很清楚了…
[/Quote]
wentingwei 2009-03-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 muyejingfeng100 的回复:]

整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
  *this += 1;
  return *this;
}
后置++:
const A operator ++(int)
{
    A temp = *this;
    ++(*this);
    return temp;
}
[/Quote]

就是这个!
guiji1988 2009-03-06
  • 打赏
  • 举报
回复
加一个int占位符
cxxer 2009-03-06
  • 打赏
  • 举报
回复
后置的++需要加一个int参来区分
sunnystone614 2009-03-06
  • 打赏
  • 举报
回复
嗯,后置的只是需要加一个虚参,以表示他是后置的,只是个标志
shexinwei 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 muyejingfeng100 的回复:]

整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
*this += 1;
return *this;
}
后置++:
const A operator ++(int)
{
A temp = *this;
++(*this);
return temp;
}
[/Quote]
UP!
hitzheng 2009-03-06
  • 打赏
  • 举报
回复
定义的时候多加一个int参数不就行了\
jakqigle 2009-03-04
  • 打赏
  • 举报
回复
后置++重载需要有个虚的参数,可以是int型,也可以传个bool类型都可以,只是为了区分前++和后++。
实现楼上的都有了,lz!
cppupenn 2009-03-04
  • 打赏
  • 举报
回复
我昨天也法帖问了的。请问,这次后置还加个const是怎么解释?

另外,前置的引用是为啥?

[Quote=引用 9 楼 hairetz 的回复:]
引用 2 楼 muyejingfeng100 的回复:


整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
  *this += 1;
  return *this;
}
后置++:
const A operator ++(int)
{
    A temp = *this;
    ++(*this);
    return temp;
}

2楼很清楚了.后置的++需要加一个int参来区分,但是不需要输入,只是个虚参.
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 muyejingfeng100 的回复:]

整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
*this += 1;
return *this;
}
后置++:
const A operator ++(int)
{
A temp = *this;
++(*this);
return temp;
}
[/Quote]
2楼很清楚了.后置的++需要加一个int参来区分,但是不需要输入,只是个虚参.
happy002 2009-03-04
  • 打赏
  • 举报
回复
刚转做c++,来学习学习
ysysbaobei 2009-03-04
  • 打赏
  • 举报
回复
moonofstar 2009-03-03
  • 打赏
  • 举报
回复
看看书上都有。只是在int 上有点区别
donle1000 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 donle1000 的回复:]
C++ Primer上已经讲过了,前缀重载只需在后缀重载的基础上在形参中加入int
[/Quote]

说反了
donle1000 2009-03-03
  • 打赏
  • 举报
回复
C++ Primer上已经讲过了,前缀重载只需在后缀重载的基础上在形参中加入int
pengzhixi 2009-03-03
  • 打赏
  • 举报
回复

class Base{
public:
Base & operator ++(){ ++i;return *this;}//前置重载
Base operator ++(){ Base object(*this); ++i; return object;}
private:
int i;
};
muyejingfeng100 2009-03-03
  • 打赏
  • 举报
回复

整型的不要再重载了吧?
我再写一个A对象的重载吧。
前置++:
A &operator ++()
{
*this += 1;
return *this;
}
后置++:
const A operator ++(int)
{
A temp = *this;
++(*this);
return temp;
}
Roaming_Sheep 2009-03-03
  • 打赏
  • 举报
回复
印象中,后++多一个参数,这个参数用来分辨具体调用哪个++、不作别的用途

找找c++基础的书看看吧

65,210

社区成员

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

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