|7. Functions in C++
Chapter 7C++ Tutorial~2 min read

Functions in C++

Functions — Reusable Code

C++ मध्ये functions C सारखेच आहेत + extra features: function overloading (same name, different params), default parameters, inline functions, references as parameters.

Function Basics

Function definition, declaration, call

cpp
#include <iostream>
using namespace std;

// Function prototype — main() च्या आधी
int add(int a, int b);
void greet(string name);
double average(int arr[], int size);

int main() {
    greet("Rahul");
    cout << "Sum: " << add(10, 20) << endl;   // 30

    int marks[] = {85, 90, 78, 92};
    cout << "Avg: " << average(marks, 4) << endl; // 86.25

    return 0;
}

// Function definitions
void greet(string name) {
    cout << "नमस्कार, " << name << "!" << endl;
}

int add(int a, int b) {
    return a + b;
}

double average(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) sum += arr[i];
    return (double)sum / size;
}

Default Parameters + Overloading

Default args and function overloading

cpp
// Default parameters — शेवटी ठेवावेत
void greet(string name, string lang = "Marathi") {
    cout << "नमस्कार " << name << "! Language: " << lang << endl;
}

// Function overloading — same name, different signatures
int multiply(int a, int b)          { return a * b; }
double multiply(double a, double b) { return a * b; }
int multiply(int a, int b, int c)   { return a * b * c; }

int main() {
    greet("Rahul");           // Default — Marathi
    greet("Priya", "Hindi"); // Override

    cout << multiply(3, 4)        << endl;  // 12 — int version
    cout << multiply(2.5, 3.0)    << endl;  // 7.5 — double version
    cout << multiply(2, 3, 4)     << endl;  // 24 — 3 param version

    return 0;
}

Pass by Reference

References — original बदलतो!

cpp
// Pass by value — copy, original unchanged
void doubleVal(int x) { x *= 2; }

// Pass by reference — & — original बदलतो
void doubleRef(int &x) { x *= 2; }

// Pass by pointer — C style
void doublePtr(int *x) { *x *= 2; }

void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

int main() {
    int n = 5;
    doubleVal(n);
    cout << n << endl;  // 5 — unchanged

    doubleRef(n);
    cout << n << endl;  // 10 — changed!

    int x = 3, y = 7;
    swap(x, y);
    cout << x << " " << y << endl;  // 7 3

    return 0;
}

Recursion

Recursive functions

cpp
int factorial(int n) {
    if (n <= 1) return 1;          // base case
    return n * factorial(n - 1);   // recursive call
}

int fibonacci(int n) {
    if (n <= 1) return n;
    return fibonacci(n-1) + fibonacci(n-2);
}

cout << "5! = " << factorial(5) << endl;  // 120
cout << "fib(7) = " << fibonacci(7) << endl;  // 13

Key Points — लक्षात ठेवा

  • Function prototype — main() च्या आधी declare करा
  • Default parameters — function signature च्या शेवटी
  • Overloading — same name, different param types/count
  • int &ref — reference parameter, original बदलतो
  • Recursion — base case mandatory!
0/11 chapters पूर्ण