Указатель на функцию в качестве параметра. Передача функции в качестве параметра. С++ Урок #65

YOUTUBE · 30.11.2025 08:44

Ключевые темы и таймкоды

Введение в указатели на функции

0:00
  • Указатель на функцию — это переменная, в которую можно присвоить ссылку на функцию.
  • Указатели на функции позволяют добиться эффекта полиморфизма.
  • Полиморфизм позволяет функции выполнять разные задачи в зависимости от параметров.

Полиморфизм и указатели на функции

0:59
  • Полиморфизм позволяет писать функции, которые выполняют разные задачи в зависимости от параметров.
  • Концепция указателей на функции схожа с делегатами в C#.

Создание указателя на функцию

1:59
  • Синтаксис указателя на функцию похож на синтаксис обычной функции.
  • Указатель на функцию требует указания типа функции и списка параметров.
  • Указатель на функцию не требует написания реализации функции.

Практическое использование указателей на функции

3:53
  • Пример создания указателя на функцию типа void.
  • Пример создания двух функций: f1 и f2, которые выводят свои имена в консоль.
  • Пример вызова функций через указатель.

Вызов функций через указатель

5:17
  • Пример присвоения функции в указатель и вызова функции через указатель.
  • Пример изменения функции, присвоенной в указатель, и ее вызова.

Проблемы с сигнатурой функций

6:37
  • Пример ошибки компилятора при попытке присвоить функцию с несоответствующей сигнатурой.
  • Пример исправления указателя для работы с функциями, принимающими параметры.

Модификация функций и указателя

7:37
  • Пример модификации функций f1 и f2 для соответствия сигнатуре указателя.
  • Пример вызова функций с передачей параметров и вывода результатов.

Заключение

9:06
  • Указатели на функции редко используются в чистом виде.
  • В большинстве случаев проще просто вызвать нужную функцию напрямую.

Введение в ситуацию

9:42
  • Представьте, что вы сотрудник крупной компании, разрабатывающей голографический монитор.
  • Вам нужно написать код для вывода данных на этот монитор.
  • Ваши коллеги должны написать функции для получения данных из базы данных и удаленного сервера.

Проблемы с функциями коллег

10:39
  • Вы не знаете, как называются функции коллег, и ждете, пока они напишут хотя бы часть кода.
  • Первый коллега написал функцию для запроса данных из базы данных.
  • Вы подключаете библиотеку для работы с сообщениями и вызываете функцию коллеги.

Реализация вывода данных

12:20
  • Вы организуете вывод данных на голографический монитор.
  • Второй коллега написал функцию для запроса данных с веб-сервера.
  • Вы сталкиваетесь с проблемой выбора, какие данные выводить: из базы данных или веб-сервера.

Решение проблемы с помощью костылей

13:41
  • Вы вводите переменную для выбора источника данных.
  • При вызове функции передаете параметр, определяющий, откуда получать данные.
  • Логика функции зависит от значения переменной.

Будущие требования и проблемы

14:45
  • Начальство объявляет о планах добавить новые функции для получения данных из фотографий и голоса.
  • Ваша текущая логика не подходит для новых функций.
  • Появляется необходимость в указателе на функцию для универсальности.

Использование указателя на функцию

15:41
  • Указатель на функцию позволяет принимать любые функции, соответствующие определенным критериям.
  • Ваша функция принимает указатель на функцию и вызывает переданную функцию.
  • Любая функция, соответствующая требованиям, может быть использована.

Пример использования указателя на функцию

17:43
  • Разработчики передают свои функции в вашу функцию.
  • Ваша функция автоматически вызывает переданную функцию и выводит данные.
  • Новая функция, например, для получения данных из астрала, также может быть использована.

Заключение и семантика названий функций

19:26
  • Функции, получающие информацию, обычно называются с префиксом "гет".
  • Это семантически понятно и облегчает понимание кода.
  • Урок завершен, автор просит поставить лайк и подписаться на канал.