델파이 클래스 함수를 오버로드하는 방법 :이 같은 (2007 년) 수준의 기능 델파이가
Class Function InitGlobal : TForm; Overload; Virtual; Abstract;
일부 자손 클래스에서 내가하려고 :
Class Function InitGlobal : TDescendentForm; Overload; Override;
그러나 델파이가 TDescendentForm.InitGlobal
다르다 불만을 이전 선언에서 ("Overload"지시문을 눌러도).
함수 결과 유형을 오버로드 할 수 없다고 생각합니다. 어떤 경우에 그러한 과부하를 정의하는 올바른 방법은 무엇입니까?
Function overloading by return type?을 확인했지만, 델파이에 대한 언급없이 이러한 과부하를 만드는 것에 대한 단점과 찬성에 대해 언급합니다.
을하지만, 동시에 모두를 수행 할 수 없습니다
구현은 다음과 같이 나타납니다. 'overload'는 다른 메소드 시그니처를 가질 필요가있는 반면,'override'는 메소드가 파생 된 타입과 같은 이름의 메소드를 대체 할 것이라는 것을 나타냅니다. 아마도 더 자세한 코드 샘플이 도움이 될 것입니다. –
귀하의 의견은 부적합합니다 @. 사실은 동시에 둘 다 할 수 있다는 것입니다. RTL 및 VCL에서 여러 번 발생합니다. –
정보를 주셔서 감사합니다, @ RobKennedy. 오버로드는 주어진 행동에 대해 서로 다른 매개 변수만을 정의하는 메소드가 될 것이고, 오버라이드는 객체의 행동을 재정의하는 메소드가 될 것으로 항상 예상했기 때문에 나는 지금까지 두 가지를 동시에 해왔다. 나는 그 두 가지를 한 번도 해 본 적이 없으며, 어떻게 든 그것을 설계 결함으로 생각하는 경향이 있습니다. 하지만 RTL 및 VCL에서 여러 번 수행된다고 말하면 단순히 필요하지 않은 어떤 이유로 좋을 것입니다. =) –