Ponteiros de função e callbacks
Callback permite a um algoritmo chamar lógica escolhida pelo caller.
O que é Ponteiros de função e callbacks?
Callback permite a um algoritmo chamar lógica escolhida pelo caller.
Passe comportamento para outra função.
Pontos importantes
- Todo ponteiro deve apontar para objeto vivo compatível ou ser null.
- Libere exatamente uma vez cada alocação própria.
- Expresse ownership e const claramente.
Exemplos de código C e C++
main.c
#include <stdio.h>
int square(int value) { return value * value; }
int apply(int value, int (*operation)(int)) { return operation(value); }
int main(void) {
printf("%d\n", apply(6, square));
return 0;
}
36
C++
main.cpp
#include <functional>
#include <iostream>
int apply(int value, const std::function<int(int)>& operation) {
return operation(value);
}
int main() {
int factor = 6;
std::cout << apply(factor, [](int value) { return value * value; }) << '\n';
}
36
Comparação entre C e C++
C usa tipo de function pointer explícito; C++ oferece lambdas e std::function com estado.
C
Ownership e limpeza são convenções manuais.
C++
Containers e RAII codificam ownership e limpeza no lifetime.
Exercícios práticos
Execute as duas versões e modifique-as para observar suas garantias.
- Teste null e falhas de alocação.
- Use AddressSanitizer e UndefinedBehaviorSanitizer.
- Documente o ownership de cada ponteiro.