Sobes.tech
Junior

É possível declarar um ponteiro para função em C++?

sobes.tech IA

Resposta da IA

Sim.

// Definição de um ponteiro para função que aceita dois int e retorna um int
int (*ptr_para_ADD)(int, int);

// Exemplo de função que corresponde à assinatura
int ADD(int a, int b) {
    return a + b;
}

// Atribuição do endereço da função ao ponteiro
ptr_para_ADD = &ADD;

// Chamada da função através do ponteiro
int resultado = ptr_para_ADD(5, 3); // resultado será 8

Também usando aliases de tipos (typedef) ou using:

// Uso de typedef
typedef int (*OperationFunc)(int, int);

OperationFunc ptr_para_sub;

int SUB(int a, int b) {
    return a - b;
}

ptr_para_sub = ⊂
int resultado_sub = ptr_para_sub(10, 4); // resultado_sub será 6

// Uso de using (C++11 e posteriores)
using OperationFunc2 = int (*)(int, int);

OperationFunc2 ptr_para_mul;

int MUL(int a, int b) {
    return a * b;
}

ptr_para_mul = &MUL;
int resultado_mul = ptr_para_mul(2, 7); // resultado_mul será 14

Ponteiros para funções podem ser usados como argumentos de funções (callbacks) ou valores de retorno.