सी में ओवरलोडेड फ़ंक्शंस को ओवरराइड करना
ऐसे परिदृश्य पर विचार करें जहां एक व्युत्पन्न वर्ग अपने बेस क्लास से एक फ़ंक्शन को ओवरराइड करता है जो ओवरलोडेड है। ओवरराइड करने पर, आपको व्युत्पन्न वर्ग में अतिभारित फ़ंक्शन की अनुपस्थिति को इंगित करने वाली त्रुटि का सामना करना पड़ सकता है। यह व्यवहार कोई डिज़ाइन दोष नहीं है बल्कि C के वंशानुक्रम तंत्र का परिणाम है।
डिफ़ॉल्ट रूप से, जब कोई वर्ग किसी सदस्य फ़ंक्शन को ओवरराइड करता है, तो केवल ओवरराइड किए गए संस्करण को व्युत्पन्न वर्ग के दायरे में माना जाता है। इसलिए, बेस क्लास में फ़ंक्शन का कोई भी ओवरलोडेड संस्करण अब पहुंच योग्य नहीं है।
इस समस्या को हल करने और ओवरलोडिंग क्षमताओं को बनाए रखने के लिए, आप व्युत्पन्न क्लास में उपयोग निर्देश का उपयोग कर सकते हैं:
class bar : public foo {
using foo::a; // Bring overloads from 'foo' into 'bar'
};
उपयोग निर्देश स्पष्ट रूप से निर्दिष्ट करता है कि फू क्लास से ए का ओवरलोड बार क्लास में उपलब्ध होना चाहिए। यह व्युत्पन्न वर्ग को फ़ंक्शन के सभी अतिभारित संस्करणों तक पहुंचने और उपयोग करने की अनुमति देता है।
यह ध्यान रखना महत्वपूर्ण है कि यदि आधार और व्युत्पन्न दोनों वर्गों में समान अधिभार मौजूद है, तो उपयोग निर्देश का उपयोग करने से अस्पष्टताएं आ सकती हैं। इसके अतिरिक्त, यदि मौजूदा कोड बेस क्लास के ओवरलोड के विशिष्ट व्यवहार पर निर्भर करता है, तो नए ओवरलोड को पेश करने से इसकी इच्छित कार्यक्षमता बदल सकती है। इसलिए, इस तकनीक का उपयोग करते समय सावधानी बरतने की सलाह दी जाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3