Basics
Functions & Default Arguments
Overloading, Defaults
💡 Function overloading ek hi naam ke multiple "versions" rakhna hai (jaise ek hi remote button, alag context mein alag kaam) — compiler khud decide karta hai kaunsa version chalana hai, arguments dekh kar.
C mein ek naam ka sirf ek function ho sakta hai. C++ "function overloading" allow karta hai — same naam, alag parameters (type ya count), compiler call site par sahi version choose kar leta hai automatically.
C++ "default arguments" bhi deta hai — function declare karte waqt kuch parameters ki default value de sakte ho, taaki call karte waqt unhe skip kiya ja sake.
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; } // overload — same naam, alag type
void greet(string name, string greeting = "Hello") { // default argument
cout << greeting << ", " << name << endl;
}
int main() {
cout << add(2, 3) << endl; // 5 (int version)
cout << add(2.5, 3.5) << endl; // 6 (double version)
greet("Aarav"); // "Hello, Aarav" (default greeting)
greet("Riya", "Namaste"); // "Namaste, Riya"
return 0;
}⚙️
Function overloading ek hi naam ke multiple "versions" rakhna hai (jaise ek hi remote button, alag context mein alag kaam) — compiler khud decide karta hai kaunsa version chalana hai, arguments dekh kar.
1 / 2
⚡ झट से Recap
- Overloading = same function naam, alag parameters
- Compiler khud sahi version choose karta hai (arguments dekh kar)
- Default arguments = kuch parameters optional bana sakte ho
इस page में (1 subtopics)
C++ mein teen tareeke se function ko argument pass kar sakte ho: by value (copy milti hai), by reference (& — original modify ho sakta hai, syntax simple), by pointer (* — original modify ho sakta hai, explicit dereferencing chahiye). Modern C++ usually reference prefer karta hai jab modification chahiye ho.
void byValue(int x) { x = 100; } // copy — original unaffected
void byReference(int &x) { x = 100; } // original modify hota hai
void byPointer(int *x) { *x = 100; } // original modify hota hai, explicit *
int main() {
int a = 5;
byValue(a); cout << a << endl; // 5
byReference(a); cout << a << endl; // 100
return 0;
}Tip: Bade objects (jaise strings, vectors) function mein pass karte waqt const reference use karo (const string &s) — copy nahi banti (fast), aur modify bhi nahi ho sakta (safe).