फ़ंक्शन ओवरलोडिंग को मेथड ओवरलोडिंग के रूप में भी जाना जाता है। फ़ंक्शन ओवरलोडिंग बहुरूपता की अवधारणा द्वारा प्रदान की गई एक विशेषता है जिसका व्यापक रूप से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में उपयोग किया जाता है।
फ़ंक्शन ओवरलोडिंग प्राप्त करने के लिए, फ़ंक्शन को इन शर्तों को पूरा करना चाहिए -
- फ़ंक्शन का रिटर्न प्रकार समान होना चाहिए।
- फ़ंक्शन का नाम समान होना चाहिए।
- पैरामीटर प्रकार में भिन्न हो सकते हैं लेकिन संख्या में समान होने चाहिए।
उदाहरण
int display(int a); int display(float a); // दोनों फ़ंक्शन ओवरलोड किए जा सकते हैं int display(int a); float display(float b); // दोनों फ़ंक्शन ओवरलोड नहीं किए जा सकते क्योंकि एक फ़ंक्शन का रिटर्न प्रकार दूसरे से भिन्न है
आइए चर्चा करते हैं C++ में उन फ़ंक्शन्स की जिन्हें ओवरलोड नहीं किया जा सकता
- अलग नाम और अलग संख्या में पैरामीटर वाले फ़ंक्शन्स
उदाहरण
#include <iostream>
using namespace std;
int max_two(int a, int b) { // दो पैरामीटर हैं
if (a > b) {
return a;
} else {
return b;
}
}
int max_three(int a, int b, int c) { // तीन पैरामीटर हैं
if (a > b && a > c) {
return a;
} else if (b > c) {
return b;
} else {
return c;
}
}
int main() {
max_two(a, b);
return 0;
}
- समान नाम लेकिन अलग रिटर्न प्रकार वाले फ़ंक्शन्स
उदाहरण
#include <iostream>
using namespace std;
int max_two(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
float max_two(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
int main() {
max_two(a, b);
return 0;
}
- एक सदस्य फ़ंक्शन जो फ़ंक्शन ओवरलोडिंग की सभी शर्तों को पूरा करता है लेकिन यदि यह एक स्थिर सदस्य फ़ंक्शन है तो इसे ओवरलोड नहीं किया जा सकता।
उदाहरण
#include <iostream>
class check {
static void test(int i) { }
void test(int i) { }
};
int main() {
check ch;
return 0;
}
- यदि दो फ़ंक्शन बिल्कुल समान हैं लेकिन केवल डिफ़ॉल्ट तर्कों में भिन्न हैं यानी फ़ंक्शन में से एक में डिफ़ॉल्ट तर्क हैं, तो उन्हें समान माना जाता है जिसका अर्थ है कि उन्हें ओवरलोड नहीं किया जा सकता और इसलिए कंपाइलर उसी फ़ंक्शन के पुनः घोषणा की त्रुटि फेंक देगा।
उदाहरण
#include <iostream>
#include <stdio.h>
using namespace std;
int func_1(int a, int b) {
return a * b;
}
int func_1(int a, int b = 40) {
return a + b;
}
int main() {
func_1(10, 20);
return 0;
}