कभी-कभी मेरे पास एक अधिभार के बाद "ओवरलोड" कीवर्ड होता है जो अधिभारित नहीं होता है।क्या 'ओवरलोड` कीवर्ड कोई फर्क पड़ता है?
कोड की पठनीयता और रखरखाव के अलावा, क्या इसका कोई अन्य प्रभाव है जिसके बारे में मुझे अवगत होना चाहिए?
कभी-कभी मेरे पास एक अधिभार के बाद "ओवरलोड" कीवर्ड होता है जो अधिभारित नहीं होता है।क्या 'ओवरलोड` कीवर्ड कोई फर्क पड़ता है?
कोड की पठनीयता और रखरखाव के अलावा, क्या इसका कोई अन्य प्रभाव है जिसके बारे में मुझे अवगत होना चाहिए?
बड़ा अंतर यह है कि जब किसी विधि के तर्क गलत होते हैं, तो गैर-अधिभारित विधि के लिए त्रुटि संदेश काफी बेहतर होता है।
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
फ़ंक्शन पर विचार करें। StrUtils.IfThen
ठीक एक बार मौजूद है:
function IfThen(AValue: Boolean; const ATrue: string;
AFalse: string = ''): string; overload; inline;
अभी तक यह overload
के रूप में चिह्नित किया गया है। ऐसा इसलिए है क्योंकि यह Math.IfThen
के साथ अधिभारित है, और यदि एक इकाई दोनों Math
और StrUtils
दोनों का उपयोग करती है, तो एक अयोग्य IfThen
तर्कों के आधार पर उचित फ़ंक्शन को हल करेगा, और uses
सूची में इकाइयों के क्रम के बावजूद।
नाइस - मुझे कभी नहीं पता था कि ऐसी समस्याओं को हल करने के लिए इसका उपयोग किया जा सकता है! –