TSL语言基础 > Object TSL > 算符重载

面向对象的Operator算符重载支持++,--,+=,-=    

简述
面向对象的Operator算符重载支持++,--,+=,-=,

  • 实现示例如:
    type bb=class
     data;
     public
     function create(v);
     begin
       data:=v;
     end;
     function operator++(v);
     begin
       if v=0 then//d:=obj++;时
       begin
          r:= new bb();
          r.data:=data;
          r.data++;
          return r;
        end //其它情况下,都是++后的状态
        else data++;
      end;
      function operator--(v);
      begin
        if v=0 then
        begin
          r:= new bb();
          r.data:=data;
          r.data--;
          return r;
        end
        else data--;
      end;
      function operator+=(v);
      begin
        data+=v;
      end;
      function operator-=(v);
      begin
        data-=v;
      end;
    end;


    调用测试:
    t:=array(1,2,3,999,5);
     b:=new bb(t);
     ++b;//自加
     echo "++b后:";
     echo "b.data: ",tostn(b.data);
     c:=b++;
     echo "c:=b++;后:";
     echo "c.data: ",tostn(c.data);
     echo "b.data:",tostn(b.data);

    打印结果如下:
    ++b后:
    b.data:
    array(2,3,4,1000,6)
    c:=b++;后:
    c.data:
    array(2,3,4,1000,6)
    b.data:
    array(3,4,5,1001,7)