pascalabcnet/TestSuite/implicitexplicit1.pas
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

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.