Function Overloading
Function overloading क्या है?
Function overloading आपको कई functions को एक ही नाम देने देता है, बशर्ते उनकी parameter सूचियाँ भिन्न हों — अलग संख्या में parameters, या अलग types। C++ आपके भेजे arguments से पता कर लेता है कि आपका मतलब कौन-सा था।
Overload क्यों करें?
Overloading के बिना आपको एक ही विचार के लिए भद्दे नाम चाहिए: addInts, addDoubles, addThree। Overloading एक साफ़ नाम — add — को इन सबकी सेवा करने देता है, तो callers को variants याद नहीं रखने पड़ते।
एक चलता उदाहरण
#include <iostream>
using namespace std;
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }
int main() {
cout << add(2, 3) << "\n"; // int version
cout << add(2.5, 3.5) << "\n"; // double version
cout << add(1, 2, 3) << "\n"; // teen-arg version
return 0;
}5
6
6
Compiler कैसे चुनता है
Compiler आपके call को उस version से मिलाता है जिसके parameters argument types और संख्या से सबसे अच्छे फिट हों — इस प्रक्रिया को overload resolution कहते हैं। उदाहरण में, add(2, 3) दो-int version से मेल खाता है, add(2.5, 3.5) दो-double version से, और ऐसे ही।
अलग क्या माना जाता है
| अंतर | मान्य overload? |
|---|---|
| Parameters की अलग संख्या | हाँ |
| अलग parameter types | हाँ |
| Types का अलग क्रम | हाँ (जैसे (int,double) बनाम (double,int)) |
| केवल अलग return type | नहीं — अनुमति नहीं |
| केवल अलग parameter नाम | नहीं — नाम मायने नहीं रखते |
आम गलतियाँ
- केवल return type से overload करने की कोशिश — अनुमति नहीं।
- दो ऐसे versions लिखना जो ambiguous हों, तो कोई एकल सर्वोत्तम मेल न हो।
- यह सोचना कि अलग parameter नाम overload बनाते हैं — केवल types/संख्या मायने रखते हैं।
- Overloading (compile-time) को overriding (run-time, virtual functions से) से भ्रमित करना।
एक overloaded area function लिखें: एक square के लिए (एक भुजा), एक rectangle के लिए (लंबाई और चौड़ाई), और एक circle के लिए (त्रिज्या, double लौटाते हुए)। हर एक को main से call करें।
सारांश
- Overloading = एक ही नाम वाले कई functions, अलग parameters।
- Compiler वह version चुनता है जो आपके arguments से सबसे अच्छा मेल खाए।
- Overloads को parameter संख्या, types या क्रम में भिन्न होना चाहिए।
- आप केवल return type या parameter नामों से overload नहीं कर सकते।
- Overloading compile-time है; overriding एक अलग run-time अवधारणा है।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C++ में function overloading क्या है?
Function overloading क्यों उपयोगी है?
addInt, addDouble और addThree जैसे नाम गढ़ने के बजाय एक सहज नाम साझा करने देता है। इससे code साफ़ और पढ़ने में आसान होता है, क्योंकि add(...) काम करता है चाहे आप दो ints, दो doubles या तीन numbers भेजें।