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.