यह एक वास्तव में मूर्खतापूर्ण सवाल की तरह लग सकता है लेकिन मैं नहीं जानता कि क्यों यह भी संकलित करने के लिए अनुमति दी है:डेल्फी कन्स्ट्रक्टर पैरामीटर को गलत क्यों होने देता है?
program ConstructorWithParam;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TThing = class(TObject)
private
FParent: TObject;
public
constructor Create(const AParent: TObject);
end;
{ TThing }
constructor TThing.Create; // <- WTF? Why does the compiler not complain?
begin
FParent := AParent;
end;
var
Thing: TThing;
begin
try
Thing := TThing.Create(TObject.Create);
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
मैं डेल्फी XE5 उपयोग कर रहा हूँ और अन्य संस्करणों पर परीक्षण नहीं किया। धन्यवाद।
धन्यवाद केन, मैं डेल्फी का उपयोग 15 वर्षों से कर रहा हूं और मुझे यह नहीं पता था! और मैं सहमत हूं - मैं कार्यान्वयन से मेल खाने के लिए इंटरफ़ेस पसंद करता हूं। मुझे लगता है कि एकमात्र समय यह सच नहीं है जब ओवरलोडिंग विधियों? –
टर्बोपास्कल 5.0 ने इसे पेश किया। –
ध्यान दें कि संकलक केवल तभी अनुमति देगा यदि कोई पैरामीटर निर्दिष्ट नहीं किया गया है, अगर उन्हें निर्दिष्ट किया गया है तो उन्हें मेल खाना चाहिए या संकलक शिकायत करेगा। यह पास्कल की एक भाषा विशेषता थी जो डेल्फी की पूर्व-तिथियां थीं। –