Sobes.tech
Junior
185

Може ли в C++ да се обяви указател към функция?

Отговор от AI

sobes.tech AI

Да.

// Определяне на указател към функция, която приема два int и връща int
int (*ptr_to_ADD)(int, int);

// Пример за функция, която съответства на сигнатурата
int ADD(int a, int b) {
    return a + b;
}

// Присвояване на адреса на функцията към указателя
ptr_to_ADD = &ADD;

// Викаме функцията чрез указателя
int резултат = ptr_to_ADD(5, 3); // резултат ще бъде 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 резултат_sub = ptr_to_sub(10, 4); // резултат ще бъде 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 резултат_mul = ptr_to_mul(2, 7); // резултат ще бъде 14

Указатели към функции могат да се използват като аргументи на функции (callback-и) или като стойности за връщане.