C++ Tutorial

Class and Object

Reference

Inheritance and Derivation

Polymorphism and Virtual Functions

Operator Overloading

Template

Exception

Object Oriented Advanced

Input/Output Stream

File Operations

Default Parameter For C++ Functions

In C++, you can specify default values for function parameters. This allows you to call a function with fewer arguments than its defined parameters. If an argument is not provided, the function will use the default value for that parameter. This can make your code more concise and flexible.

In this tutorial, we'll cover how to define and use default parameters in C++ functions.

  • Defining Default Parameters: To define default parameters, simply provide the default value after the parameter's type and name, separated by an equal sign (=) in the function declaration.

Example:

#include <iostream>

// Function declaration with default parameters
int add(int a, int b = 0, int c = 0);

int main() {
    std::cout << "add(1) = " << add(1) << std::endl;
    std::cout << "add(1, 2) = " << add(1, 2) << std::endl;
    std::cout << "add(1, 2, 3) = " << add(1, 2, 3) << std::endl;

    return 0;
}

// Function definition
int add(int a, int b, int c) {
    return a + b + c;
}

Output:

add(1) = 1
add(1, 2) = 3
add(1, 2, 3) = 6
  • Rules for Default Parameters:
  • Default values must be provided in the function declaration, not the definition.
  • Default parameters must be specified in the rightmost contiguous group (i.e., no gaps between default and non-default parameters).
  • When calling a function with default parameters, you can skip arguments from right to left.

Example:

#include <iostream>

// Function declaration with default parameters
void displayMessage(std::string message, int repeat = 1, char separator = '-');

int main() {
    std::cout << "Default parameters:" << std::endl;
    displayMessage("Hello!");

    std::cout << "Custom separator:" << std::endl;
    displayMessage("Hello!", 1, '+');

    std::cout << "Custom repeat and separator:" << std::endl;
    displayMessage("Hello!", 3, '*');

    return 0;
}

// Function definition
void displayMessage(std::string message, int repeat, char separator) {
    for (int i = 0; i < repeat; ++i) {
        std::cout << message << std::endl;
    }
    std::cout << std::string(message.length(), separator) << std::endl;
}

Output:

Default parameters:
Hello!
-----
Custom separator:
Hello!
+++++
Custom repeat and separator:
Hello!
Hello!
Hello!
*****

By using default parameters in C++ functions, you can simplify your code, reduce redundancy, and improve its readability. Be sure to follow the rules for default parameters to avoid any potential issues.

  1. How to use default parameters in C++ functions:

    • Description: Introduces the concept of default parameters in C++ functions, allowing parameters to have predefined values if not provided by the caller.
    • Example Code:
      #include <iostream>
      
      // Function with default parameter
      void printMessage(const std::string& message = "Hello, World!") {
          std::cout << message << std::endl;
      }
      
      int main() {
          printMessage(); // Uses the default parameter value
          printMessage("Custom message"); // Overrides the default parameter value
          return 0;
      }
      
  2. Default parameter values in C++ function declaration:

    • Description: Illustrates how default parameter values can be specified in the function declaration, allowing the function definition to provide only the necessary details.
    • Example Code:
      // Function declaration with default parameter value
      void greetUser(const std::string& name = "Guest");
      
      int main() {
          greetUser(); // Uses the default parameter value
          greetUser("John"); // Overrides the default parameter value
          return 0;
      }
      
      // Function definition
      void greetUser(const std::string& name) {
          // Function body
      }
      
  3. Using multiple default parameters in C++ functions:

    • Description: Shows how functions can have multiple default parameters, allowing flexibility in function calls.
    • Example Code:
      #include <iostream>
      
      // Function with multiple default parameters
      void printDetails(const std::string& name = "John", int age = 25, bool isStudent = false) {
          std::cout << "Name: " << name << ", Age: " << age << ", Student: " << std::boolalpha << isStudent << std::endl;
      }
      
      int main() {
          printDetails(); // Uses all default parameter values
          printDetails("Alice", 30); // Overrides name and age, uses default for isStudent
          printDetails("Bob", 22, true); // Overrides all default parameter values
          return 0;
      }
      
  4. Default parameters and function prototypes in C++:

    • Description: Explains how default parameters are specified in function prototypes and how they affect function declarations.
    • Example Code:
      // Function prototype with default parameter value
      void displayNumber(int num = 42);
      
      int main() {
          displayNumber(); // Uses the default parameter value
          return 0;
      }
      
      // Function definition
      void displayNumber(int num) {
          // Function body
      }
      
  5. Default parameters in member functions of C++ classes:

    • Description: Demonstrates the use of default parameters in member functions of C++ classes, providing default values for member function parameters.
    • Example Code:
      #include <iostream>
      
      class MyClass {
      public:
          // Member function with default parameter
          void printMessage(const std::string& message = "Hello, Class!") {
              std::cout << message << std::endl;
          }
      };
      
      int main() {
          MyClass obj;
          obj.printMessage(); // Uses the default parameter value
          obj.printMessage("Custom message"); // Overrides the default parameter value
          return 0;
      }
      
  6. Default parameters in function pointers in C++:

    • Description: Illustrates the use of default parameters in function pointers, considering situations where flexibility in function pointers is needed.
    • Example Code:
      #include <iostream>
      
      // Function with default parameter
      void printDetails(const std::string& name = "John", int age = 25) {
          std::cout << "Name: " << name << ", Age: " << age << std::endl;
      }
      
      int main() {
          // Function pointer with default parameter values
          void (*funcPtr)(const std::string&, int) = &printDetails;
      
          // Function calls using the function pointer
          funcPtr(); // Uses default parameter values
          funcPtr("Alice"); // Overrides name, uses default for age
          funcPtr("Bob", 30); // Overrides both default parameter values
          return 0;
      }