"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكن للمندوبين تعزيز المرونة وقابلية الصيانة في كود C++؟

كيف يمكن للمندوبين تعزيز المرونة وقابلية الصيانة في كود C++؟

تم النشر بتاريخ 2024-11-19
تصفح:987

How Can Delegates Enhance Flexibility and Maintainability in C   Code?

شرح المفهوم المتنوع للمندوبين في لغة C

المفوض في لغة C هو بناء برمجي يسمح لك بتمرير مؤشر دالة كوسيطة. يمكّنك هذا من إنشاء عمليات رد اتصال يمكن استدعاؤها بشكل غير متزامن أو في سياقات مختلفة.

هناك طرق مختلفة لتنفيذ المفوضين في لغة C، بما في ذلك:

الممثلون

الممثلون هم كائنات التي تحدد وظيفة عامل التشغيل ()، مما يجعلها قابلة للاستدعاء بشكل فعال.

struct Functor {
    int operator()(double d) {
        return (int)d   1;
    }
};

تعبيرات Lambda (C 11 وما بعده)

توفر تعبيرات Lambda بناء جملة موجزًا ​​لإنشاء المفوضين في السطر:

auto func = [](int i) -> double { return 2 * i / 1.15; };

مؤشرات الوظائف

يمكن استخدام مؤشرات الوظائف المباشرة لتمثيل المفوضين:

int f(double d) { ... }
typedef int (*MyFuncT)(double d);

مؤشر إلى وظائف الأعضاء

توفر مؤشرات وظائف الأعضاء طريقة سريعة لإنشاء مفوضين لأعضاء الفصل:

struct DelegateList {
    int f1(double d) { }
    int f2(double d) { }
};
typedef int (DelegateList::* DelegateType)(double d);

std::function

std::function هو قالب C قياسي يمكنه تخزين أي شيء قابل للاستدعاء، بما في ذلك lambdas، functors، ومؤشرات الوظائف.

#include 
std::function f = [any of the above];

الربط (باستخدام std::bind)

يسمح لك الربط بتطبيق الوسائط جزئيًا على المفوض، مما يجعلها ملائمة لاستدعاء وظائف الأعضاء:

struct MyClass {
    int DoStuff(double d); // actually (MyClass* this, double d)
};
std::function f = std::bind(&MyClass::DoStuff, this, std::placeholders::_1);

القوالب

يمكن قبول القوالب أي قابل للاستدعاء يطابق قائمة الوسائط:

قالب int DoSomething(FunctionT func) { وظيفة الإرجاع (3.14) ؛
template 
int DoSomething(FunctionT func) {
    return func(3.14);
}
يعد المندوبون أداة متعددة الاستخدامات في لغة C تمكنك من تحسين مرونة التعليمات البرمجية الخاصة بك وقابلية صيانتها. من خلال اختيار أسلوب المفوض المناسب لاحتياجاتك المحددة، يمكنك تمرير الوظائف بشكل فعال كمعلمات، والتعامل مع عمليات الاسترجاعات، وتنفيذ البرمجة غير المتزامنة في لغة C .

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3