StartprogrammingusingObjectPascal:ProcedureAndFunctionOverloading
프로시저와 함수 오버로딩
오버로딩은 하나 이상의 프로시저나 함수를 이름은 같지만 인자를 다르게 하여 작성할 수 있음을 의미합니다. 다른 인자라는 것은 인자 형식의 다름이나 인자 수의 다름을 의미합니다.
예를 들어 Sum 함수의 두 가지 버전을 작성하려고 합니다. 하나는 받아들이는 인자들과 되돌리는 값이 정수형이고, 다른 하나는 받아들이는 인자들과 되돌리는 값이 실수형입니다.
program sum;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
function Sum(x, y: Integer): Integer; overload;
begin
Result:= x + y;
end;
function Sum(x, y: Double): Double; overload;
begin
Result:= x + y;
end;
var
j, i: Integer;
h, g: Double;
begin
j:= 15;
i:= 20;
Writeln(j, ' + ', i, ' = ', Sum(j, i));
h:= 2.5;
g:= 7.12;
Writeln(h, ' + ', g, ' = ', Sum(h, g));
Write('Press enter key to close');
Readln;
end.
"이 함수는 오버로드 되었습니다"라는 의미를 지닌 예약어 overload를 사용했음에 주의하도록 합니다.