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

36 lines
922 B
ObjectPascal

// Ïåðåãðóçêà îïåðàöèé. Êëàññ "Äðîáü"
type
Frac = record
private
n,m: integer;
public
constructor (n,m: integer);
begin
Self.n := n;
Self.m := m;
end;
class function operator+(f1,f2: Frac): Frac; // îïåðàöèÿ ïåðåãðóæàåòñÿ êàê êëàññîâàÿ ôóíêöèÿ
begin
Result.n := f1.n*f2.m+f1.m*f2.n;
Result.m := f1.n*f1.m;
end;
class function operator-(f1,f2: Frac): Frac;
begin
Result.n := f1.n*f2.m-f1.m*f2.n;
Result.m := f1.n*f1.m;
end;
function ToString: string; override; // Òðåáóåòñÿ ïåðåîïðåäåëèòü ýòó ôóíêöèþ ÷òîáû âûâîäèòü ïåðåìåííûå òèïà Frac â write
begin
Result := Format('{0}/{1}',n,m);
end;
end;
var f,f1: Frac;
begin
f := new Frac(2,3);
f1 := new Frac(1,2);
writelnFormat('{0} + {1} = {2} ',f,f1,f+f1);
// f+f1 ïåðåâîäèòñÿ êîìïèëÿòîðîì â Frac.operator+(f,f1)
writelnFormat('{0} - {1} = {2} ',f,f1,f-f1);
end.