- C++ Functions
- C++ User-defined Function
- C++ Function Declaration
- Calling a Function
- Example 1: Display a Text
- Function Parameters
- Example 2: Function with Parameters
- Return Statement
- Example 3: Add Two Numbers
- Function Prototype
- Example 4: C++ Function Prototype
- C++ Library Functions
- Объекты функции в стандартной библиотеке C++
- Создание объекта функции
- Объекты функций и контейнеры
- Объекты функций и алгоритмы
- Объекты функции в стандартной библиотеке C++
- Создание объекта функции
- Объекты функций и контейнеры
- Объекты функций и алгоритмы
C++ Functions
A function is a block of code that performs a specific task.
Suppose we need to create a program to create a circle and color it. We can create two functions to solve this problem:
Dividing a complex problem into smaller chunks makes our program easy to understand and reusable.
There are two types of function:
- Standard Library Functions: Predefined in C++
- User-defined Function: Created by users
In this tutorial, we will focus mostly on user-defined functions.
C++ User-defined Function
C++ allows the programmer to define their own function.
A user-defined function groups code to perform a specific task and that group of code is given a name (identifier).
When the function is invoked from any part of the program, it all executes the codes defined in the body of the function.
C++ Function Declaration
The syntax to declare a function is:
returnType functionName (parameter1, parameter2. ) < // function body >
Here’s an example of a function declaration.
// function declaration void greet()
- the name of the function is greet()
- the return type of the function is void
- the empty parentheses mean it doesn’t have any parameters
- the function body is written inside <>
Note: We will learn about returnType and parameters later in this tutorial.
Calling a Function
In the above program, we have declared a function named greet() . To use the greet() function, we need to call it.
Here’s how we can call the above greet() function.
Example 1: Display a Text
#include using namespace std; // declaring a function void greet() < cout int main() < // calling the function greet(); return 0; >
Function Parameters
As mentioned above, a function can be declared with parameters (arguments). A parameter is a value that is passed when declaring a function.
For example, let us consider the function below:
Here, the int variable num is the function parameter.
We pass a value to the function parameter while calling the function.
Example 2: Function with Parameters
// program to print a text #include using namespace std; // display a number void displayNum(int n1, float n2) < cout int main() < int num1 = 5; double num2 = 5.5; // calling the function displayNum(num1, num2); return 0; >
The int number is 5 The double number is 5.5
In the above program, we have used a function that has one int parameter and one double parameter.
We then pass num1 and num2 as arguments. These values are stored by the function parameters n1 and n2 respectively.
Note: The type of the arguments passed while calling the function must match with the corresponding parameters defined in the function declaration.
Return Statement
In the above programs, we have used void in the function declaration. For example,
This means the function is not returning any value.
It’s also possible to return a value from a function. For this, we need to specify the returnType of the function during function declaration.
Then, the return statement can be used to return a value from a function.
Here, we have the data type int instead of void . This means that the function returns an int value.
The code return (a + b); returns the sum of the two parameters as the function value.
The return statement denotes that the function has ended. Any code after return inside the function is not executed.
Example 3: Add Two Numbers
// program to add two numbers using a function #include using namespace std; // declaring a function int add(int a, int b) < return (a + b); >int main() < int sum; // calling the function and storing // the returned value in sum sum = add(100, 78); cout Working of C++ Function with return statement Notice that sum is a variable of int
type. This is because the return value of add()
is of int
type.
Function Prototype
In C++, the code of function declaration should be before the function call. However, if we want to define a function after the function call, we need to use the function prototype. For example,
// function prototype void add(int, int); int main() < // calling the function before declaration. add(5, 3); return 0; >// function definition void add(int a, int b)
In the above code, the function prototype is:
This provides the compiler with information about the function name and its parameters. That's why we can use the code to call a function before the function has been defined.
The syntax of a function prototype is:
returnType functionName(dataType1, dataType2, . );
Example 4: C++ Function Prototype
// using function definition after main() function // function prototype is declared before main() #include using namespace std; // function prototype int add(int, int); int main() < int sum; // calling the function and storing // the returned value in sum sum = add(100, 78); cout Benefits of Using User-Defined Functions
- Functions make the code reusable. We can declare them once and use them multiple times.
- Functions make the program easier as each small task is divided into a function.
- Functions increase readability.
C++ Library Functions
Library functions are the built-in functions in C++ programming.
Programmers can use library functions by invoking the functions directly; they don't need to write the functions themselves.
Some common library functions in C++ are sqrt() , abs() , isdigit() , etc.
In order to use library functions, we usually need to include the header file in which these library functions are defined.
For instance, in order to use mathematical functions such as sqrt() and abs() , we need to include the header file cmath .
Объекты функции в стандартной библиотеке C++
Объект функции(или функтор) — это любой тип, реализующий operator(). Этот оператор называется оператором вызова или иногда оператором приложения. Стандартная библиотека C++ использует объекты функций главным образом в качестве критериев сортировки для контейнеров и в алгоритмах.
Объекты функций обеспечивают два основных преимущества по сравнению с прямым вызовом функций. Во-первых, объект функции может содержать состояние. Во-вторых, объект функции является типом и поэтому может использоваться в качестве параметра шаблона.
Создание объекта функции
Чтобы создать объект функции, создайте тип и реализуйте operator(), например:
Последняя строка функции main демонстрирует способ вызов объекта функции. Этот вызов выглядит как вызов функции, но на самом деле он вызывает оператор() типа Functor. Сходство между вызовом объекта функции и вызовом функции заключается в том, как появляется термин "объект функции".
Объекты функций и контейнеры
template , class Allocator=allocator> class set
Второй аргумент шаблона — объект функции less . Этот объект функции возвращает значение true , если первый параметр меньше второго. Так как некоторые контейнеры сортируют свои элементы, контейнеру требуется способ сравнения двух элементов. Сравнение выполняется с помощью объекта функции. Можно определить собственные критерии сортировки для контейнеров, создав объект функции и указав его в списке шаблонов для контейнера.
Объекты функций и алгоритмы
Объекты функций также используются в алгоритмах. Например, алгоритм remove_if объявляется следующим образом:
template ForwardIterator remove_if( ForwardIterator first, ForwardIterator last, Predicate pred);
Последний аргумент remove_if является объектом функции, который возвращает логическое значение ( предикат). Если результат выполнения объекта функции — значение true , элемент удаляется из контейнера, доступ к которому получают итераторы first и last . Для аргумента pred можно использовать любой из объектов функции, объявленных в заголовке, или создать собственный.
Объекты функции в стандартной библиотеке C++
Объект функции(или функтор) — это любой тип, реализующий operator(). Этот оператор называется оператором вызова или иногда оператором приложения. Стандартная библиотека C++ использует объекты функций главным образом в качестве критериев сортировки для контейнеров и в алгоритмах.
Объекты функций обеспечивают два основных преимущества по сравнению с прямым вызовом функций. Во-первых, объект функции может содержать состояние. Во-вторых, объект функции является типом и поэтому может использоваться в качестве параметра шаблона.
Создание объекта функции
Чтобы создать объект функции, создайте тип и реализуйте operator(), например:
Последняя строка функции main демонстрирует способ вызов объекта функции. Этот вызов выглядит как вызов функции, но на самом деле он вызывает оператор() типа Functor. Сходство между вызовом объекта функции и вызовом функции заключается в том, как появляется термин "объект функции".
Объекты функций и контейнеры
template , class Allocator=allocator> class set
Второй аргумент шаблона — объект функции less . Этот объект функции возвращает значение true , если первый параметр меньше второго. Так как некоторые контейнеры сортируют свои элементы, контейнеру требуется способ сравнения двух элементов. Сравнение выполняется с помощью объекта функции. Можно определить собственные критерии сортировки для контейнеров, создав объект функции и указав его в списке шаблонов для контейнера.
Объекты функций и алгоритмы
Объекты функций также используются в алгоритмах. Например, алгоритм remove_if объявляется следующим образом:
template ForwardIterator remove_if( ForwardIterator first, ForwardIterator last, Predicate pred);
Последний аргумент remove_if является объектом функции, который возвращает логическое значение ( предикат). Если результат выполнения объекта функции — значение true , элемент удаляется из контейнера, доступ к которому получают итераторы first и last . Для аргумента pred можно использовать любой из объектов функции, объявленных в заголовке, или создать собственный.