Avatar ·

¿Qué son los funtores en C++ y para qué sirven?

¡Hola, colegas! Empecé a estudiar C++ y me topé con el término "functor". Leí la documentación, pero no lo entendí del todo. Parece ser un objeto de clase que se comporta como una función. Pero, ¿para qué se necesita eso? Tenemos funciones normales, lambdas, punteros a funciones. Intenté escribir un ejemplo simple, pero no estoy seguro de que sea un uso correcto. Esto es lo que obtuve: ```cpp #include class Adder { public: int operator()(int a, int b) { return a + b; } }; int main() { Adder add; std::cout << add(3, 4) << std::endl; // Outputs 7 return 0; } ``` Entiendo que esto funciona, pero ¿en qué es mejor que una función normal `int add(int a, int b)`? ¿Para qué complicarse con toda una clase? He oído que los funtores se usan en STL, por ejemplo, en algoritmos. Pero no me queda claro cómo exactamente y en qué situaciones ofrecen una ventaja. ¿Pueden explicar en términos simples: qué son los funtores, qué ventajas tienen sobre las funciones normales y los punteros a funciones?