Default Arguments
Default arguments क्या हैं?
Default arguments आपको किसी parameter को पहले से एक value देने देते हैं, ताकि caller उसे छोड़ सके। अगर वे इसे छोड़ दें, default इस्तेमाल होता है; अगर value भेजें, वह जीतती है। यह कुछ parameters को प्रभावी रूप से वैकल्पिक बनाता है।
एक चलता उदाहरण
#include <iostream>
using namespace std;
void greet(string name, string msg = "Hello") {
cout << msg << ", " << name << "!\n";
}
int main() {
greet("Amit"); // default msg use hota hai
greet("Riya", "Welcome"); // default override
return 0;
}Hello, Amit!
Welcome, Riya!
Trailing नियम
Defaults सबसे दाईं parameters पर होनी चाहिए। एक बार किसी parameter की default हो, उसके दाईं ओर के सभी parameters की भी होनी चाहिए:
void f(int a, int b = 2, int c = 3); // OK // void g(int a = 1, int b); // ERROR: b ki default nahi
ऐसा इसलिए कि arguments बाएँ से दाएँ भरते हैं — आप बीच वाला छोड़कर बाद वाला नहीं दे सकते।
Default कहाँ रखें
अगर आपके function का अलग prototype हो, default वहाँ रखें (definition में नहीं):
int power(int base, int exp = 2); // default prototype mein
int power(int base, int exp) { // yahan default nahi
int r = 1;
for (int i = 0; i < exp; i++) r *= base;
return r;
}दोनों जगह वही default रखना compile error है।
Overloading के साथ
Default arguments overloading से overlap कर सकते हैं, पर सावधान रहें — अगर कोई defaulted call दो functions से मेल खा सके, compiler ambiguity बताता है। किसी दिए calls के समूह के लिए एक या दूसरा तरीका पसंद करें।
आम गलतियाँ
- बीच वाले parameter पर default रखना पर उसके बाद वालों पर नहीं।
- Declaration और definition दोनों में default दोहराना।
- Defaulted function और overload के बीच ambiguity बनाना।
- यह मानना कि आप call के बीच में argument छोड़ सकते हैं — नहीं छोड़ सकते।
एक function printLine(char symbol = '-', int length = 20) लिखें जो दिए character की एक line print करे। इसे बिना arguments, एक argument, और दोनों के साथ call करें, और output देखें।
सारांश
- Default arguments parameters को fallback values देते हैं, उन्हें वैकल्पिक बनाते हुए।
- दी गई value default को override करती है; छोड़ी गई उसे इस्तेमाल करती है।
- Defaults trailing (सबसे दाईं) parameters पर होनी चाहिए।
- Default prototype में रखें, definition में न दोहराएँ।
- Defaults को overloading से मिलाते समय ambiguity का ध्यान रखें।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C++ में default arguments क्या हैं?
C++ में default arguments कैसे काम करते हैं?
void greet(string msg = "Hi")। greet() call करना "Hi" इस्तेमाल करता है, जबकि greet("Hello") आपकी value इस्तेमाल करता है। Compiler किसी भी छूटे trailing arguments को उनके defaults से भर देता है।