呵呵LZ运算符的优先级没有搞清楚。
赋值运算符=的优先级比++高。
Complex   e   =   a++; 这一句是先把a的值赋给e,然后再累加。

解决方案 »

  1.   

    楼主,您的
    double   r,   v; 
    .
    .
    .

    public   static   Complex   operator   ++(Complex   a) 
                    { 
                            double   r   =   a.r   +   1; 
                            double   v   =   a.v   +   1; 
                            return   new   Complex(r,   v);                 } 
    是一样的r, v 么,应该不是!您在这个方法里重新定义了,在内存分配中,就是分配在栈内,把上面的 double r, v;给隐藏了.所以当然是那个结果.
    您可以把方法里的double去掉.试试看.
    随便乱说说,希望能起到抛砖引玉的效果.谢谢
      

  2.   

    最清晰的思路
    public       static       Complex       operator       ++(Complex       a)   
                                    {   
                                                    this.r       =       a.r       +       1;   
                                                    this.v       =       a.v       +       1;   
                                                    return       new       Complex(r,       v);                                   }   
    其他都可以不边,把double 变this,或者把double删除掉也OK.