1. Functions in C++ (Syntax, Return Type, etc.)
- A function is a block of code designed to perform a specific task. 
- Functions in C++ follow this basic syntax: 
 
  returnType functionName(parameters) {
    // function body
}
- Return Type: Specifies the data type of the value returned by the function. Use - voidif no value is returned.
- Function Name: Describes what the function does. 
- Parameters: Input values for the function (optional). 
 
#include <iostream>
using namespace std;
// Function to check tea temperature
int checkTeaTemperature(int temperature) {
    return temperature;
}
int main() {
    int temp = checkTeaTemperature(85);  // Function call
    cout << "The tea temperature is " << temp << "°C" << endl;
    return 0;
}
2. Declaring a Function
- Function declaration tells the compiler about the function’s name, return type, and parameters. It’s also called a function prototype. 
- The function body is defined elsewhere. 
 
#include <iostream>
using namespace std;
// Declaring the function (prototype)
void serveChai(int cups);
int main() {
    serveChai(3);  // Function call
    return 0;
}
// Function definition is done later
void serveChai(int cups) {
    cout << "Serving " << cups << " cups of chai!" << endl;
}
3. Defining a Function
- A function definition includes the full function with the body. 
- You must define the function after declaring it if it’s not inline. 
 
#include <iostream>
using namespace std;
// Function definition with body
void makeChai() {
    cout << "Boiling water, adding tea leaves, and serving chai!" << endl;
}
int main() {
    makeChai();  // Calling the function
    return 0;
}
4. Calling a Function
- To execute a function, you call it by its name followed by parentheses. 
- If the function takes arguments, pass them inside the parentheses. 
 
#include <iostream>
using namespace std;
// Function to brew tea
void brewChai() {
    cout << "Chai is being brewed!" << endl;
}
int main() {
    brewChai();  // Function call
    return 0;
}
5. Function Parameters (Formal, Actual, Default Parameters)
- Formal parameters: Defined in the function signature.
- Actual parameters: Values passed during the function call.
- Default parameters: Parameters with default values if none are passed.
#include <iostream>
using namespace std;
// Function with default parameter
void serveChai(string teaType = "Masala Chai") {
    cout << "Serving " << teaType << endl;
}
int main() {
    serveChai();               // Uses default parameter
    serveChai("Green Chai");    // Uses actual parameter
    return 0;
}
6. Pass by Value
- Pass by value means the function receives a copy of the argument. Changes made inside the function do not affect the original variable.
#include <iostream>
using namespace std;
void pourChai(int cups) {
    cups = cups + 1;  // Modifies local copy
    cout << "Poured " << cups << " cups of chai!" << endl;
}
int main() {
    int chaiCups = 2;
    pourChai(chaiCups);  // Passing by value
    cout << "Total chai cups outside function: " << chaiCups << endl;
    return 0;
}
7. Pass by Reference
- Pass by reference passes the actual variable, so changes in the function affect the original variable.
#include <iostream>
using namespace std;
void refillChai(int &cups) {  // Pass by reference
    cups += 2;
    cout << "Refilled to " << cups << " cups of chai!" << endl;
}
int main() {
    int chaiCups = 3;
    refillChai(chaiCups);  // Passing by reference
    cout << "Total chai cups now: " << chaiCups << endl;
    return 0;
}
8. Scope of Variables
- Variables declared inside a function have local scope (accessible only within the function).
- Variables declared outside all functions have global scope (accessible from any function).
#include <iostream>
using namespace std;
int globalChaiStock = 100;  // Global variable
void serveChai() {
    int localCups = 5;  // Local variable
    cout << "Serving " << localCups << " cups from " << globalChaiStock << " total stock." << endl;
}
int main() {
    serveChai();
    cout << "Global chai stock after serving: " << globalChaiStock << endl;
    return 0;
}
9. Function Overloading
- Function overloading allows multiple functions with the same name but different parameter types or numbers.
#include <iostream>
using namespace std;
// Function overloading
void brewChai(int cups) {
    cout << "Brewing " << cups << " cups of chai." << endl;
}
void brewChai(string teaType) {
    cout << "Brewing " << teaType << "." << endl;
}
int main() {
    brewChai(3);             // Calls int version
    brewChai("Masala Chai");  // Calls string version
    return 0;
}
10. Lambda Functions
- A  lambda function is an anonymous function that can be defined inline using the[]syntax.
- They’re useful for short, simple functions.
#include <iostream>
using namespace std;
int main(){
   //lambda
   [](int cups){
        cout << "Preparing " << cups << " cups of tea" << endl;
   }(5);
    return 0;
}
Summary:
- Function Declaration & Definition: Tell the compiler about a function and define what it does.
- Calling Functions: Execute the function by passing arguments if required.
- Pass by Value/Reference: Controls whether changes affect the original value or a copy.
- Function Overloading: Allows multiple functions with the same name but different parameter lists.
- Lambda Functions: Short, inline functions used for simple tasks.
 

 
    
Top comments (0)