Назад к вопросам
Junior
75
questionbank
Можно ли в C++ объявить указатель на функцию?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Да.
// Определение указателя на функцию, которая принимает два int и возвращает int
int (*ptr_to_ АDD)(int, int);
// Пример функции, которая соответствует сигнатуре
int ADD(int a, int b) {
return a + b;
}
// Присваивание адреса функции указателю
ptr_to_ АDD = &ADD;
// Вызов функции через указатель
int result = ptr_to_ АDD(5, 3); // result будет 8
Также с использованием псевдонимов типов (typedef) или using:
// Использование typedef
typedef int (*OperationFunc)(int, int);
OperationFunc ptr_to_sub;
int SUB(int a, int b) {
return a - b;
}
ptr_to_sub = ⊂
int result_sub = ptr_to_sub(10, 4); // result_sub будет 6
// Использование using (C++11 и новее)
using OperationFunc2 = int (*)(int, int);
OperationFunc2 ptr_to_mul;
int MUL(int a, int b) {
return a * b;
}
ptr_to_mul = &MUL;
int result_mul = ptr_to_mul(2, 7); // result_mul будет 14
Указатели на функции могут использоваться в качестве аргументов функций (колбэки) или возвращаемых значений.