Перегрузка операторов - Pascal
Формулировка задачи:
Всем доброго времени суток!
Видел несколько сайтов, на которых описана перегрузка операторов в Паскале на примерах. Например, здесь:
http://pas1.ru/oop/operator
Вот код оттуда же:
Пробовал скомпилировать и запустить этот код на PascalABC, Free Pascal и на всякий случай на RAD Studio, и везде не компилится, ошибку выдает на строчке, где начинается описание оператора. Вопрос: в чем прекол? Где-нибудь этот код вообще работает? Прошу помочь мне разобраться с этим.
P.S. Бочку сделал, ну и... соснул... ну вы поняли.
type
TComplex = class
private
x,y: real; //действительная и мнимая части
public
constructor Create;
function Modul(): real;
function Argument(): real;
procedure Printer();
end;
constructor TComplex.Create;
begin
x := 0; y := 0;
inherited Create;
end;
function TComplex.Modul(): real;
begin
modul := sqrt(x*x + y*y);
end;
function TComplex.Argument(): real;
begin
argument := arctan(y/x) * 180/pi;
end;
procedure TComplex.Printer();
begin
if y >= 0 then
writeln(x:3:1,'+',y:3:1,'i')
else
writeln(x:3:1,y:3:1,'i');
end;
operator +(const a,b: TComplex)r: TComplex;
begin
r := TComplex.Create;
r.x := a.x + b.x;
r.y := a.y + b.y;
end;
operator -(const a,b: TComplex)r: TComplex;
begin
r := TComplex.Create;
r.x := a.x - b.x;
r.y := a.y - b.y;
end;
var
c1, c2, c3, c4: TComplex;
a, b: real;
begin
c1 := TComplex.Create;
c2 := TComplex.Create;
c3 := TComplex.Create;
c4 := TComplex.Create;
write('real and imag of the FIRST number: ');
readln(c1.x, c1.y);
write('real and imag of the SECOND number: ');
readln(c2.x, c2.y);
c3 := c1 + c2;
c4 := c1 - c2;
c3.printer();
c4.printer();
readln;
end.Решение задачи: «Перегрузка операторов»
textual
Листинг программы
{$mode objfpc}
Объяснение кода листинга программы
mode- это ключевое слово, используемое в среде разработки Free Pascal для определения режима компиляции.objfpc- это значение переменной, которое указывает на то, что используется режим компиляции поддержки объектно-ориентированного программирования в Free Pascal.