मैं इस कोड है इस कोड में व्यवहार को समझ में नहीं आता है।वर्चुअल अधिभावी और छुपा कार्यों
उत्तर
समारोह से अधिक भार बल्कि अपने स्थिर प्रकार पर तर्क (जो आपके तर्क के लिए यहाँ CustomHandler*
है) की क्रम प्रकार के आधार पर यह नहीं है कि काम (जो यहाँ Handler*
है, के रूप में क्या handler
रूप में घोषित किया है कि) ।
वर्चुअल फ़ंक्शन आपको रनटाइम प्रकार एक ऑब्जेक्ट (जिसे आप फ़ंक्शन पर कॉल करते हैं) के आधार पर फ़ंक्शन कॉल करने की अनुमति देते हैं। कई ऑब्जेक्ट्स के रनटाइम प्रकार के आधार पर कॉल डिस्पैचिंग को एकाधिक प्रेषण कहा जाता है; इस इंस्टेंस में हम double dispatch के सबसे आम मामले के बारे में बात कर रहे हैं। यदि आप इस तरह की कार्यक्षमता चाहते हैं तो आपको डबल प्रेषण को लागू करना होगा या पुस्तकालय का उपयोग करना होगा जो आपके लिए करता है।
Visitor pattern कार्यान्वयन करने का एक बहुत ही आम तरीका है; Difference betwen Visitor pattern & Double Dispatch भी देखें।
अंत में, आप विज़िटर की अच्छी चर्चा पा सकते हैं जिसमें उदाहरण कोड (स्क्रॉल डाउन) here शामिल है।
+1 आपने लिखा है कि मैं क्या जवाब देना चाहता हूं। सिवाय इसके कि मैंने एक ठोस आगंतुक पैटर्न उदाहरण शामिल करने की योजना बनाई है। कृपया –
@ चीयर्संधथ जोड़ें। -एलएफ: एक लिंक जोड़ा गया जो ठीक करना चाहिए। मैं एक उदाहरण इनलाइन (बहुत अधिक बॉयलरप्लेट) जोड़ना नहीं चाहता था। – Jon
कोड के साथ कई चीजें गलत हैं। शुरुआत के लिए, फ़ंक्शन तर्क * संदर्भ * होना चाहिए। –
संदर्भ क्यों? – user152508
(ए) स्लाइसिंग और (बी) एक अनावश्यक प्रति के कारण। – ipc