In this lesson, we will learn about C++ functions and why we need a function, types, and overloading, with examples to better understand the lesson.
A function is a unit of code that carries out a particular task, a section of code that only executes when called.
Reusable: Functions are used to carry out certain activities and are crucial for code reuse. Programmers can use code definition several times and run an identical piece of code more than once, thanks to functions.
Easy to understand: A program becomes simple to learn and reuse since it breaks a difficult problem into smaller components.
Easy to share and use by other programmers: Large programs are divided into smaller parts by functions. Multiple programmers can share and use functions.
The function can be of two different types:
In C++ and programming in general, programmers can define their functions. A piece of code for carrying out a certain task is gathered into a group by a user-defined function, which is given a name (identifier). The code defined in the function’s body is executed when the function is called. Before a function can be utilized (called) anywhere in the program, it should have the following parts in C++:
The basic syntax to declare a function in C++ is:
returnType function_Name (argument1, argument2,...) { // C++ function body }
Or
returnType function_Identifer(argument1, argument2,...) { // C++ function body }
Example
// C++ function declaration void myFirstProgram () { cout << "My First Program "; }
In the above example,
myFirstProgram()
void
.A function called myFirstProgram()
has been declared in the program. We must call the myFirstProgram()
function to use it. Here is how to call the myFirstProgram()
function from the main.
int main() { // C++ function call myFirstProgram (); }
C++ Function Call Example
#include <iostream> using namespace std; void myFirstProgram() { cout << "My First Program."; // C++ function declaration } int main() { myFirstProgram(); // C++ function call return 0; }
Output
My First Program.
A function can be declared with parameters. A parameter is a piece of data passed when a function is declared.
Example
The basic syntax of a function with parameters in C++ is:
void addNum(int a, int b) // function definition with parameters { int result; result = a + b; cout << "Result = " << result; }
Here, the int variables a and b are the function addNum
parameters.
We pass a value to the function argument when we call a function.
int main() { addNum(1, 2) ;// C++ function call with values 1 and 2 return 0; }
In the program below, we used a function with two int parameters, a and b. The datatype at the time of function definition and call is an integer. Then, we pass the values of arguments 1 and 2 in the main.
#include <iostream> using namespace std; void addNum(int a, int b) // function definition { int result; result = a + b; cout << "Result = " << result; } int main() { addNum(1, 2); // C++ function call with parameter values return 0; }
We used the function declaration keyword void
in the applications mentioned above. For instance,
void addNum(int a, int b) // function definition { int result; result = a + b; cout << "Result = " << result; }
The above code indicates that the function returns no value. It is also possible for a function to return a value. For this, we must provide returnType
for the function during function declaration.
int addNum(int a, int b) { int result; result = a + b; cout << "Result = " << result; return result; }
A value from a function can then be returned using the return statement.
Instead of the void, we have the data type int in this case, indicating that the function returns an int value. The function’s code will end after the return.
Example
#include <iostream> using namespace std; int addNum(int a, int b) // function definition { int result; result = a + b; cout << "Result = " << result; //return sum in result return result; cout << "Result after return = " << result; //return sum in result } int main() { addNum(1, 2); // C++ function call return 0; }
Output
Result = 3
At this point, you were aware of the distinction between a declaration and a definition. A function prototype in C++ is a declaration of the function that informs the program about the ‘number,’ ‘type of arguments’, and the ‘type of return value’. The prototype declaration resembles a function definition but lacks a body of code.
The function prototype gives the compiler details about the name and parameters of the function. Because of this, we can call a function using code even before it has been defined.
A C++ function prototype’s basic syntax is:
returnType funName(arg1, arg2, ...);
The code above is similar to the C++ return statement. The function is defined here after the function call, which is the only distinction. For this reason, a function prototype was employed in this case.
Example
#include <iostream> using namespace std; int addNum(int a, int b); // C++ function prototype int main() { addNum(1, 2); // C++ function call before function declaration return 0; } int addNum(int a, int b) //C++ function definition { cout << "Result = " << (a + b); //return sum in (a + b) return (a + b); }
Output
Result = 3
User-defined functions can be divided into the following categories to help understand parameters and returns in functions. We will explain with examples here.
Example
#include <iostream> using namespace std; void addNum(); // C++ function prototype int main() { addNum(); // C++ function call before function declaration return 0; } void addNum() //C++ function definition { int a = 1, b = 2; cout << "Result = " << (a + b); //return sum in (a + b) }
Output
Result = 3
addNum()
in the function above is called without arguments from main().addNum()
prints the sum of a + b.addNum(return)
‘s type is void, the function returns nothing.Example
#include <iostream> using namespace std; int result; int addNum(); // C++ function prototype int main() { addNum(); // C++ function call before function declaration cout << "Result = " << result; //return sum in (a + b) return 0; } int addNum() //C++ function definition { int a = 1, b = 2; result = (a + b); return result; }
Output
Result = 3
addNum()
in the function above is called without any arguments from main() but returns the result.addNum()
stores the sum of a + b in the result, which is defined globally.addNum(return)
‘s type is int, the function returns the result of type int.Example
#include <iostream> using namespace std; void addNum(int a, int b); // C++ function prototype int main() { addNum(1, 2); // C++ function call before function declaration return 0; } void addNum(int a, int b) //C++ function definition { cout << "Result = " << (a + b); //return sum in (a + b) }
Output
Result = 3
addNum()
in the function above is called with 2 arguments from main() but returns no result.addNum()
prints the sum of a + b in the result passed through the main.addNum(return)
‘s type is void, the function returns the result of type void.Example
#include <iostream> using namespace std; int addNum(int a, int b); // C++ function prototype int main() { cout << "Result = " << addNum(1, 2); return 0; } int addNum(int a, int b) //C++ function definition { return (a + b); }
Output
Result = 3
addNum()
in the function above is called with 2 arguments from main() and returns a result.addNum()
returns the sum of a + b in the result passed through the main.addNum(return)
‘s type is int, the function returns the result of type int, and the code will print the result in the main.In C++ programming, library functions are equivalent to built-in functions. Instead of writing functions, programmers can use library functions by calling them directly. The C++ library functions sqrt()
, abs()
, isdigit()
, etc., are some examples. The header file in the C++ library must include these library functions to use. For instance, we need to include the header file cmath to use mathematical functions like sqrt()
and abs()
.
Example
#include <iostream> #include <cmath> using namespace std; int main() { int num1 = -25; long int num4 = 58; float num3 = 250; double num2 = 50.347; cout << "The absolute value of " << num1 << " is " << abs(num1) << endl; cout << "The largest integer, " << num2 << ",is " << floor(num2) << endl; cout << "The square root: " << num3 << " is " << sqrt(num3) << endl; cout << "The base to exp power: " << num4 << " is " << pow(num4, 2) << endl; return 0; }
Output
The absolute value of -25 is 25 The largest integer, 50.347, is 50 The square root: 250 is 15.8114 The base to exp power: 58 is 3364
This concludes the C++ Function lesson. In The next lesson, you will learn about function overloading in C++, and it’s usage.