Модуль: Возвращаемые значения функций


10. Отсутствие возвращаемого значения


Функции не обязаны возвращать значение. Чтобы сообщить компилятору, что функция не возвращает значение, используется тип возвращаемого значения void. Давайте посмотрим на функцию doPrint() из предыдущего урока:

void doPrint() // void is the return type
{
    std::cout << "In doPrint()" << '\n';
    // Эта функция не возвращает значение, поэтому инструкция return не требуется
}

Эта функция имеет тип возвращаемого значения void, что указывает на то, что она не возвращает значение вызывающей стороне. Поскольку она не возвращает значение, инструкция return не требуется (попытка вернуть конкретное значение из функции с типом возврата void приведет к ошибке компиляции).

Вот еще один пример функции, ничего не возвращающей, и пример программы, которая ее вызывает:

#include <iostream>
 
// void означает, что функция не возвращает значение вызывающей стороне
void returnNothing()
{
    std::cout << "Hi" << '\n';
    // Эта функция не возвращает значение, поэтому инструкция return не требуется
}
 
int main()
{
    returnNothing(); // хорошо: вызывается функция returnNothing(), значение не возвращается
 
    std::cout << returnNothing(); // ошибка: эта строка не компилируется. 
                                  // Вам нужно будет закомментировать ее, чтобы продолжить.
 
    return 0;
}

При первом вызове функции returnNothing функция печатает «Hi», а затем ничего не возвращает вызывающей функции. Управление возвращается в main, и программа продолжает выполнение.

Второй вызов функции returnNothing даже не будет компилироваться. Функция returnNothing имеет возвращаемый тип void, то есть не возвращает значения. Однако эта инструкция пытается отправить возвращаемое из returnNothing значение в std::cout для печати. std::cout не знает, что с этим делать (какое значение он будет выводить?). Следовательно, компилятор пометит это как ошибку. Вам нужно закомментировать эту строку кода, чтобы код компилировался.

Тип возврата void (что означает, что ничего не возвращается) используется, когда нам нужна функция, которая ничего не возвращает вызывающей стороне (потому что в этом нет необходимости). В приведенном выше примере у функции returnNothing есть полезное поведение (она печатает «Hi»), но ей не нужно ничего возвращать вызывающей стороне (в данном случае main). Следовательно, функции returnNothing присваивается возвращаемый тип void.

time 1000 ms
memory 256 Mb

Комментарий учителя