आप एक वर्ग समारोह है कि एक वर्ग का एक उदाहरण बनाता मिल सकता है , वह फ़ंक्शन कोड कैसा दिखता है? क्या आप टॉब्जेक्ट की न्यू इंस्टेंस विधि का उपयोग करते हैं और क्या आप हर व्युत्पन्न कक्षा के लिए हर बार फिर से लागू करते हैं? क्या यह संरक्षक का उपयोग करने के लिए सुरक्षित/बेहतर है?कक्षा समारोह है कि डेल्फी
लक्ष्य एक आदेश पैटर्न में इस दृष्टिकोण का उपयोग और वर्ग प्रकार के साथ आदेश सूची और एक रिसीवर जैसे लोड करने के लिए है:
//FYI: document is an instance of TDocument
commandList.Execute(TOpenDocument(document));
commandList.Execute(TPasteFromClipboard(document));
//... lots of actions - some can undo
commandList.Execute(TPrintDocument(document));
commandList.Execute(TSaveDocument(document));
और इस का कारण यह है कि है कुछ आदेश पाठ के माध्यम से निर्दिष्ट किया जाएगा/स्क्रिप्ट और रनटाइम पर हल करने की आवश्यकता होगी।
निर्माण के बजाय निर्माता को नया कॉल करने का कोई कारण नहीं है, और इसके लिए वर्चुअल होने का कोई कारण नहीं है। –
@ रोब: कक्षा चर के माध्यम से निर्माण करते समय कन्स्ट्रक्टर ओवरराइड का एक कारण है। मैं मानता हूं कि बनाएं, अब तक एक बेहतर नाम है; यह नया() यहां सिर्फ उस प्रश्न से संबंधित है जहां नया() कक्षा कार्य के नाम के रूप में दिया जाता है। – dmajkic
यह सच है कि वर्चुअल कन्स्ट्रक्टर केवल तब उपयोगी होते हैं जब कक्षा-संदर्भ चर का उपयोग किया जाता है, लेकिन यह * सत्य नहीं है कि वर्चुअल कन्स्ट्रक्टर * आवश्यक * हैं। आपको केवल आभासी रचनाकारों की आवश्यकता है यदि आपको * उन्हें वंश वर्गों में * ओवरराइड करने की आवश्यकता है; यह आभासी तरीकों के किसी भी अन्य उपयोग से अलग नहीं है। इस सवाल से कोई संकेत नहीं दिया गया कि वंशजों को अपनी बेस क्लास से अलग निर्माण व्यवहार की आवश्यकता होगी (एक अलग वर्ग बनाने के अलावा, लेकिन यह स्वचालित है)। –