आपके पास एक ही फ़ंक्शन नाम के लिए एक ही दायरे में कई परिभाषाएँ हो सकती हैं। फ़ंक्शन की परिभाषा तर्क सूची में प्रकार और/या तर्कों की संख्या से एक दूसरे से भिन्न होनी चाहिए। आप फ़ंक्शन घोषणाओं को अधिभारित नहीं कर सकते जो केवल रिटर्न प्रकार से भिन्न होती हैं।
फ़ंक्शन ओवरलोडिंग मूल रूप से संकलन समय बहुरूपता है। यह फ़ंक्शन हस्ताक्षर की जांच करता है। यदि हस्ताक्षर समान नहीं हैं, तो उन्हें अतिभारित किया जा सकता है। फ़ंक्शन का रिटर्न प्रकार फ़ंक्शन ओवरलोडिंग पर कोई प्रभाव नहीं डालता है। अलग-अलग रिटर्न प्रकार के साथ समान फ़ंक्शन हस्ताक्षर अतिभारित नहीं होंगे।
निम्नलिखित उदाहरण है जहां एक ही फ़ंक्शन प्रिंट () का उपयोग विभिन्न डेटा प्रकारों को प्रिंट करने के लिए किया जा रहा है
उदाहरण कोड
#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); // Call print to print integer
pd.print(500.263); // Call print to print float
pd.print("Hello C++"); // Call print to print character
return 0;
} आउटपुट
Printing int: 5 Printing float: 500.263 Printing character: Hello C++