फंक्शन ओवरलोडिंग को मेथड ओवरलोडिंग के रूप में भी जाना जाता है। फ़ंक्शन ओवरलोडिंग बहुरूपता की अवधारणा द्वारा प्रदान की जाने वाली विशेषता है जिसका व्यापक रूप से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में उपयोग किया जाता है।
फ़ंक्शन ओवरलोडिंग को प्राप्त करने के लिए, फ़ंक्शंस को इन शर्तों को पूरा करना चाहिए -
-
वापसी प्रकार के कार्य समान होने चाहिए
-
कार्यों का नाम समान होना चाहिए
-
पैरामीटर प्रकार में भिन्न हो सकते हैं लेकिन संख्या में समान होने चाहिए
उदाहरण
int display(int a); int display(float a); // both the functions can be overloaded int display(int a); float display(float b); //both the functions can’t be overloaded as the return type of one function is different from another
आइए उन फंक्शन के बारे में चर्चा करते हैं जिन्हें C++ में ओवरलोड नहीं किया जा सकता है
-
अलग-अलग नाम और पैरामीटर की अलग-अलग संख्या के साथ कार्य करता है
उदाहरण
#include<iostream> using namespace std; int max_two(int a, int b) //contains two parameters{ if(a>b){ return a; } else{ return b; } } int max_three(int a, int b ,int c) //contains three parameters{ 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; }