C++ 运算符重载,重载++符号。

tongjm2009 2011-07-10 02:27:46
比如:有一个operator方法:
CDate& operator ++()
{
AddDays(1);
return *this;
}

问题是:1.如何判断这个运算符重载的++的前置or后置?

请大家说说自己的理解谢谢!
...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengjianqiang2011 2011-07-10
  • 打赏
  • 举报
回复
使用operator++( )或operator--( )来重载前置运算符,使用operator++(int)或operator--(int)来重载后置运算符,调用时,参数int被传递给值0。
Steward2011 2011-07-10
  • 打赏
  • 举报
回复
前置无哑元,后知有哑元
动感超哥 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 babilife 的回复:]
一般要写两个

C/C++ code

interge& operator++()
{
cout<<"前置++"<<endl;
this->num++;
return *this;
}
const interge operator++(int)
{
……
[/Quote]
++ 好理解。。
一根烂笔头 2011-07-10
  • 打赏
  • 举报
回复
就是有参数没有参数的区别!
ljq550000 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 michaelbomb 的回复:]

CDate& operator ++(int)
CDate& operator ++
[/Quote]

正解
tongjm2009 2011-07-10
  • 打赏
  • 举报
回复
谢谢各位,我试过了!

但是能谈谈具体的实现原理吗?
至善者善之敌 2011-07-10
  • 打赏
  • 举报
回复
一般要写两个

interge& operator++()
{
cout<<"前置++"<<endl;
this->num++;
return *this;
}
const interge operator++(int)
{
cout<<"后置++"<<endl;
interge tem;
tem=this->num;
this->num++;
return tem;
}
qzhxz321 2011-07-10
  • 打赏
  • 举报
回复
运算符++和—有前置和后置两种形式,如果不区分前置和后置,则使用operator++( )或operator--( )即可;否则,要使用operator++( )或operator--( )来重载前置运算符,使用operator++(int)或operator--(int)来重载后置运算符,调用时,参数int被传递给值0。
james3008 2011-07-10
  • 打赏
  • 举报
回复
没带参数的就是前加了,后加需要带一个参数
CDate& operator ++(int notUsed);
函数体就写成后加的形式了。
MichaelBomb 2011-07-10
  • 打赏
  • 举报
回复
CDate& operator ++(int)
CDate& operator ++

64,439

社区成员

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

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