前缀加加和后缀加加重载

来源:互联网 发布:淘宝天下小二找上门 编辑:程序博客网 时间:2024/04/27 20:49
实现后缀加加的重载 
class_type&   operator++(int){ 
            ……//不知道怎么样实现 


也就是说不知道后缀加加的内部机制是怎么样实现的?? 
有人能说明白不? 
重载后缀加加实现和内部类型相同的运算功能,可以不??
  
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
回复次数:5
  • Mr_Yang用户头像
  • Mr_Yang
  • (初级程序员)
  • 等 级:
#1楼 得分:0回复于:2005-12-15 23:26:13
增1减1运算符是单目运算符。它们又有前缀和后缀运算两种。为了区分这两种运算,将后缀运算视为又目运算符。表达式 

        obj++或obj-- 

被看作为: 

        obj++0或obj--0 

#include   <iostream.h> 

class   counter 

public: 
        counter()   {   v=0;   } 
        counter   operator   ++(); 
        counter   operator   ++(int   ); 
        void   print()   {   cout < <v < <endl;   } 
private: 
        unsigned   v; 
}; 

counter   counter::operator   ++() 

        v++; 
        return   *this; 


counter   counter::operator   ++(int) 

        counter   t; 
        t.v   =   v++; 
        return   t; 

 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:线程同步机制各有什么优缺点
  • wshcdr用户头像
  • wshcdr
  • (dd)
  • 等 级:
#2楼 得分:0回复于:2005-12-15 23:59:31
记住类似N++这样后缀的重载的原则如下 
在下面的语句中 
INT M = N++ 
M得到的值是N做++前的值 
而N中保留的是做了++后的值 

对照理解 
counter   counter::operator   ++(int) 

        counter   t; 
        t.v   =   v++; 
        return   t; 
}
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:迅雷笔试题,欢迎挑战。
  • xuleicsu用户头像
  • xuleicsu
  • 等 级:
#3楼 得分:0回复于:2005-12-16 00:06:15
说的好,试验试验看看
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:一份C/C++实习生笔试试卷(基础部分),大家讨论一下答案吧!
  • xuleicsu用户头像
  • xuleicsu
  • 等 级:
#4楼 得分:0回复于:2005-12-16 00:09:47
照上面写的,t.v=v++,实际上就是拷贝了一份调用operator   ++(int)的对象,然后把这个拷贝的对象返回,然后v自加
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐:给初学者的一点建议,顺便散一点赌球赢来的分
  • superpingl用户头像
  • superpingl
  • (赖平)
  • 等 级:
#5楼 得分:0回复于:2005-12-16 22:32:56
对于类的后缀运算的重载确实是这样的 
但是我的问题不是这样的简单的,要是就这样能解决了就不用麻烦各位高人了 
呵呵!!!! 

我的意思是实现的后缀能进行四则运算。如: 
int   i,i1=5; 
i=(i1++)+(i1++); 
这样的运算能力。 
但是在c++builder6.0这样的重载好像不行, 
但是在vc++6.0中好像又可以。
原创粉丝点击