Назад к вопросам
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

Указатели на функции могут использоваться в качестве аргументов функций (колбэки) или возвращаемых значений.