Avatar ·

ما هي الدوال الكائنية (Functors) في لغة C++ ولماذا نحتاجها؟

مرحبًا أيها الزملاء! بدأت في تعلم لغة C++ واصطدمت بمصطلح "functor". قرأت الوثائق لكنني لم أفهمه تمامًا. يبدو أنه كائن من class يتصرف مثل function. لكن لماذا نحتاج شيئًا كهذا؟ لدينا functions عادية و lambdas و pointers to functions. حاولت كتابة مثال بسيط، لكنني لست متأكدًا من أنه استخدام صحيح. إليك ما حصلت عليه: ```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; // يطبع 7 return 0; } ``` أفهم أن هذا يعمل، لكن ما الذي يجعله أفضل من function عادية مثل `int add(int a, int b)`؟ لماذا ننشئ class كامل؟ سمعت أن functors تُستخدم في STL، مثلاً في algorithms. لكن ليس واضحًا لي كيف وفي أي مواقف تعطي ميزة. هل يمكنكم شرح "بأسلوب بسيط": ما هي functors، وما هي مزاياها مقارنة بـ functions العادية و pointers to functions؟