आप एक ही स्कोप में एक ही फंक्शन नाम के लिए कई परिभाषाएं रख सकते हैं। फंक्शन की परिभाषा आर्गुमेंट लिस्ट में आर्गुमेंट के प्रकार और/या संख्या से भिन्न होनी चाहिए। आप उन फंक्शन डिक्लेरेशन को ओवरलोड नहीं कर सकते जो केवल रिटर्न टाइप में भिन्न हों।
फंक्शन ओवरलोडिंग मूल रूप से कंपाइल टाइम पॉलीमॉर्फिज्म है। यह फंक्शन सिग्नेचर की जांच करता है। यदि सिग्नेचर समान नहीं हैं, तो उन्हें ओवरलोड किया जा सकता है। फंक्शन का रिटर्न टाइप फंक्शन ओवरलोडिंग पर कोई प्रभाव नहीं डालता। अलग रिटर्न टाइप के साथ समान फंक्शन सिग्नेचर ओवरलोड नहीं होगा।
निम्नलिखित उदाहरण है जहां समान फंक्शन print() का उपयोग विभिन्न डेटा टाइप प्रिंट करने के लिए किया जा रहा है:
उदाहरण कोड
#include <iostream> using namespace std; class printData { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } void print(char* c) { cout << "Printing character: " << c << endl; } }; int main(void) { printData pd; pd.print(5); // पूर्णांक प्रिंट करने के लिए print कॉल करें pd.print(500.263); // फ्लोट प्रिंट करने के लिए print कॉल करें pd.print("Hello C++"); // कैरेक्टर प्रिंट करने के लिए print कॉल करें return 0; }
आउटपुट
Printing int: 5 Printing float: 500.263 Printing character: Hello C++