11
가끔 과부하가 걸리지 않는 메서드를 사용한 후에 "overload"키워드가 있습니다.`overload` 키워드는 어떤 차이가 있습니까?
코드의 가독성 및 유지 보수성 외에도 다른주의해야 할 사항이 있습니까?
가끔 과부하가 걸리지 않는 메서드를 사용한 후에 "overload"키워드가 있습니다.`overload` 키워드는 어떤 차이가 있습니까?
코드의 가독성 및 유지 보수성 외에도 다른주의해야 할 사항이 있습니까?
큰 차이점은 메서드에 대한 인수가 올바르지 않으면 오버로드되지 않은 메서드의 경우 오류 메시지가 훨씬 더 좋습니다.
program Test;
procedure F(X: Integer);
begin
end;
procedure G(X: Integer); overload;
begin
end;
var
P: Pointer = nil;
begin
F(P); // E2010 Incompatible types: 'Integer' and 'Pointer'
G(P); // E2250 There is no overloaded version of 'G' that can be called with these arguments
end.
오버로드 된 메소드는 모르는 기능으로 오버로드 될 수 있습니다. 표준 IfThen
기능을 고려하십시오.
function IfThen(AValue: Boolean; const ATrue: string;
AFalse: string = ''): string; overload; inline;
아직 그것은 overload
로 표시됩니다 : StrUtils.IfThen
은 정확히 한 번만 존재한다. 이는 Math.IfThen
으로 오버로드되어 하나의 유닛이 Math
과 StrUtils
을 모두 사용하는 경우 무 규정 인 IfThen
은 인수에 따라 그리고 uses
목록의 단위 순서에 관계없이 적절한 기능으로 해결됩니다.
멋진 - 나는 그런 문제를 해결하는 데 사용할 수 있다는 것을 결코 알지 못했습니다! –