StartprogrammingusingObjectPascal:ProcedureAndFunctionOverloading

From 흡혈양파의 번역工房
Revision as of 10:41, 26 July 2012 by Onionmixer (talk | contribs) (SPOP 프로시저와함수오버로딩 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

프로시저와 함수 오버로딩

오버로딩은 하나 이상의 프로시저나 함수를 이름은 같지만 인자를 다르게 하여 작성할 수 있음을 의미합니다. 다른 인자라는 것은 인자 형식의 다름이나 인자 수의 다름을 의미합니다.

예를 들어 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를 사용했음을 눈여겨 보도록 합니다.