42 lines
678 B
ObjectPascal
42 lines
678 B
ObjectPascal
|
|
type TClass = class
|
||
|
|
a : integer;
|
||
|
|
constructor(a : integer);
|
||
|
|
begin
|
||
|
|
self.a := a;
|
||
|
|
end;
|
||
|
|
|
||
|
|
class function operator implicit(a : integer):TClass;
|
||
|
|
begin
|
||
|
|
Result := new TClass(a);
|
||
|
|
end;
|
||
|
|
|
||
|
|
class function operator implicit(a : real):TClass;
|
||
|
|
begin
|
||
|
|
Result := new TClass(round(a));
|
||
|
|
end;
|
||
|
|
|
||
|
|
class function operator implicit(t : TClass):integer;
|
||
|
|
begin
|
||
|
|
Result := t.a;
|
||
|
|
end;
|
||
|
|
|
||
|
|
class function operator explicit(t : TClass):char;
|
||
|
|
begin
|
||
|
|
Result := System.Convert.ToChar(t.a);
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
var t : TClass;
|
||
|
|
i : integer;
|
||
|
|
r : real;
|
||
|
|
|
||
|
|
begin
|
||
|
|
t := 202;
|
||
|
|
assert(t.a = 202);
|
||
|
|
i := t;//integer(t);
|
||
|
|
assert(i=202);
|
||
|
|
var c : char := char(t);
|
||
|
|
assert(c=char(202));
|
||
|
|
t := 112.23;
|
||
|
|
assert(t.a = 112);
|
||
|
|
end.
|