下边是一个复数的例子,范例中重载了+和<运算符:
Type Tcomplex=class
vReal;//实部
vImaginary;//虚部
function Operator +(data); //单参数,即只支持obj+10,不支持10+obj
begin
r:=new Tcomplex();
if ifnumber(data) then
r.vReal:=vReal+data
else begin
r.vReal:=vReal+data.vReal;
r.vImaginary:=vImaginary+data. vImaginary;
end;
return r;
end;
function Operator<(data,isLeft); //双参数,支持obj<10的判断,也支持10<obj的判断
End;
Function Operator Tcomplex. <(data,isLeft);//由于.<本身是一个操作符,因此此处的.和<必须用空格分开
Begin
//echo "isLeft:",isLeft;//对象是否在左边
If ifnumber(data) then
V:=vReal<data
else
V:= (vReal^2+vImaginary^2)<data.vReal^2+data.vImaginary^2;
If not isLeft then V:=not V;
Return V;
End;
调用测试:
t1:=new TComplex();
t1.vReal:=10;
t1.vImaginary:=100;
t2:=t1+10; //不支持t2:=10+t1;
echo "t2.vReal:",t2.vReal;
echo "t1<5:",t1<5;
echo "t1<300:",t1<300;
echo "5<t1:",5<t1;//对象在右边
打印结果:
t2.vReal:20
t1<5:0
t1<300:1
5<t1:1