"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या C++ असाइनमेंट ऑपरेटर्स को वर्चुअल होना चाहिए?

क्या C++ असाइनमेंट ऑपरेटर्स को वर्चुअल होना चाहिए?

2024-12-26 को प्रकाशित
ब्राउज़ करें:708

Should C   Assignment Operators Be Virtual?

सी में वर्चुअल असाइनमेंट ऑपरेटर और इसकी आवश्यकताएं

हालांकि असाइनमेंट ऑपरेटर को सी में वर्चुअल के रूप में परिभाषित किया जा सकता है, यह एक अनिवार्य आवश्यकता नहीं है। हालाँकि, यह वर्चुअल घोषणा वर्चुअलिटी की आवश्यकता के बारे में सवाल उठाती है और क्या अन्य ऑपरेटरों को भी वर्चुअल बनाया जा सकता है।

वर्चुअल असाइनमेंट ऑपरेटर के लिए मामला

असाइनमेंट ऑपरेटर स्वाभाविक रूप से आभासी नहीं है. हालाँकि, विरासत में मिली कक्षाओं की वस्तुओं को बेस क्लास वेरिएबल्स में निर्दिष्ट करते समय यह आवश्यक हो जाता है। यह डायनामिक बाइंडिंग सुनिश्चित करती है कि ऑब्जेक्ट के डायनामिक प्रकार के आधार पर असाइनमेंट ऑपरेटर का सही कार्यान्वयन कहा जाता है।

क्या अन्य ऑपरेटर वर्चुअल हो सकते हैं?

हां, अन्य जो ऑपरेटर परिभाषित किए जा रहे प्रकार की किसी वस्तु को तर्क के रूप में लेते हैं, उन्हें वर्चुअल भी बनाया जा सकता है। यह इन ऑपरेटरों के रनटाइम बाइंडिंग की अनुमति देता है, यह सुनिश्चित करता है कि ऑब्जेक्ट के गतिशील प्रकार के आधार पर सही कार्यान्वयन का उपयोग किया जाता है।

वर्चुअल असाइनमेंट ऑपरेटर के साथ अप्रत्याशित व्यवहार

बनाना असाइनमेंट ऑपरेटर वर्चुअल अप्रत्याशित व्यवहार का कारण बन सकता है। एक वर्चुअल फ़ंक्शन का हस्ताक्षर उसके सभी ओवरराइड के लिए समान होना चाहिए। इसलिए, यह सुनिश्चित करना महत्वपूर्ण है कि विभिन्न वर्गों के लिए ओवरराइड असाइनमेंट ऑपरेटरों के पैरामीटर और रिटर्न मान सुसंगत हैं।

डिफ़ॉल्ट मान और ओवरलोडेड असाइनमेंट ऑपरेटर्स

पैरामीटर के लिए डिफ़ॉल्ट मान असाइनमेंट ऑपरेटरों को वर्चुअल फ़ंक्शंस के माध्यम से कार्यान्वित किया जा सकता है। यह डिफ़ॉल्ट मानों का उपयोग करने की अनुमति देता है जब विरासत वाले वर्ग के ऑब्जेक्ट को बेस क्लास प्रकार के एक चर को सौंपा जाता है।

रनटाइम प्रकार सूचना (आरटीटीआई)

आरटीटीआई विरासत में मिले प्रकारों के लिए असाइनमेंट ऑपरेटरों को प्रभावी ढंग से संभालने के लिए इसका उपयोग किया जा सकता है। आने वाली वस्तु के प्रकार को निर्धारित करने के लिए डायनामिक_कास्ट का उपयोग करके, सही असाइनमेंट ऑपरेटर कार्यान्वयन निष्पादित किया जा सकता है। कोड:

कक्षा बी { जनता: वर्चुअल शून्य ऑपरेटर = (स्थिरांक बी और दाएं) { ... } पूर्णांक x; }; कक्षा डी : सार्वजनिक बी { जनता: वर्चुअल शून्य ऑपरेटर = (स्थिरांक बी और दाएं) { ... } int y; };वर्चुअलिटी के बिना, बी ऑब्जेक्ट को डी ऑब्जेक्ट असाइन करने से क्लास बी से असाइनमेंट ऑपरेटर को कॉल किया जाएगा, जो क्लास डी में अतिरिक्त डेटा सदस्य को सही ढंग से संभाल नहीं पाएगा। हालांकि, वर्चुअलिटी के साथ, सही असाइनमेंट क्लास डी से ऑपरेटर को बुलाया जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3