इस पोस्ट में, हम C++ में फंक्शन ओवरलोडिंग और फंक्शन ओवरराइडिंग के बीच अंतर को समझेंगे।
ओवरलोडिंग
ओवरलोडिंग के दौरान कोई कीवर्ड उपयोग नहीं किया जाता है।
प्रोटोटाइप केवल पैरामीटर की संख्या या प्रकार के आधार पर भिन्न होता है।
यह कंपाइल टाइम पर होता है।
कंस्ट्रक्टर्स को ओवरलोड किया जा सकता है।
डिस्ट्रक्टर को ओवरलोड नहीं किया जा सकता।
इसका उपयोग अर्ली बाइंडिंग प्राप्त करने के लिए किया जा सकता है।
कॉल किए जा रहे फंक्शन का संस्करण उपयोग किए जा रहे पैरामीटर की संख्या या प्रकार द्वारा निर्धारित किया जाता है।
फंक्शन्स को समान नाम, अलग-अलग संख्या या प्रकार के पैरामीटर्स के साथ पुनर्परिभाषित किया जाएगा।
ओवरराइडिंग
प्रोटोटाइप पूरे समय समान रहता है।
यह रनटाइम पर होता है।
वर्चुअल फंक्शन्स को ओवरराइड नहीं किया जा सकता।
डिस्ट्रक्टर को ओवरराइड किया जा सकता है।
ओवरराइडिंग को लेट बाइंडिंग के रूप में भी जाना जाता है।
बेस क्लास में जिस फंक्शन को ओवरराइड किया जाना है, उसके पहले 'वर्चुअल' कीवर्ड होता है।
क्लास के ऑब्जेक्ट का पता उस पॉइंटर को असाइन किया जाता है जिसका फंक्शन पॉइंटर द्वारा कॉल किया जाता है।
जब फंक्शन परिभाषित होता है, तो यह मेन क्लास में 'वर्चुअल' कीवर्ड से पहले होता है।
उसी फंक्शन को 'आउट' कीवर्ड का उपयोग करके डिराइव्ड क्लास में पुनर्परिभाषित किया जाता है।