ما هي الدوال الكائنية (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؟