运算符重载的前置版和后置版的区别?

mayuhao 2003-03-13 10:28:45
初学,
ESSENTIAL C++ P119:
class Triangular_iterator
{
public:
...
Triangular_iterator& operator++();
Triangular_iterator operator++(int);
...
}
书中对int有解释;
但不懂前者有“&”而后者无的原因
求教,谢谢!!
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayuhao 2003-03-13
  • 打赏
  • 举报
回复
原来如此
  • 打赏
  • 举报
回复
呵呵,前置版本返回的是对象本身,即++后的那个,如++1,返回值是2
而后置版本要求返回是原来的对象,所以必须复制一个临时对象返回,如1++,返回值是1;
class A{
public:
int& operator++( );
int operator++(,int);
private:
int i;
};
int& operator++( ){
return ++i;
}
int operator++(,int){
int temp=i;
++i;
return temp;
}
当返回的是一个对象的话,返回引用可以节省的效率你知道吧?:)
mayuhao 2003-03-13
  • 打赏
  • 举报
回复
对啊,但我不懂的不是int而是&啊
  • 打赏
  • 举报
回复
int& operator++( );
int operator++(,int);//后置版本只是多用一个int参数战位,表示后置版本而已:)

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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