Punteros a función y callbacks
Un callback permite que un algoritmo invoque lógica elegida por el caller.
¿Qué es Punteros a función y callbacks?
Un callback permite que un algoritmo invoque lógica elegida por el caller.
Pasa comportamiento a otra función.
Puntos importantes
- Todo puntero debe apuntar a un objeto vivo compatible o ser null.
- Libera exactamente una vez cada allocation propia.
- Expresa ownership y const con claridad.
Ejemplos de código C y 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
Comparación entre C y C++
C usa un tipo de puntero a función explícito; C++ ofrece lambdas y std::function con estado.
C
Ownership y limpieza son convenciones manuales.
C++
Los contenedores y RAII codifican ownership y limpieza en el lifetime.
Ejercicios prácticos
Ejecuta ambas versiones y modifícalas para observar sus garantías.
- Prueba null y fallos de allocation.
- Usa AddressSanitizer y UndefinedBehaviorSanitizer.
- Documenta el ownership de cada puntero.