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

## هل يمكنك الحصول على مؤشرات وظيفية لمشغلي C++ المدمجين؟

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

## Can You Get Function Pointers for Built-in C   Operators?

هل من الممكن الحصول على مؤشر الوظيفة لمشغل قياسي مدمج؟

مقدمة

توفر مؤشرات الوظائف طريقة للإشارة إلى محددات محددة وظائف المشغل. ومع ذلك، بالنسبة للمشغلين القياسيين المدمجين، قد لا يكون هذا النهج واضحًا. تتعمق هذه المقالة في الأسباب الكامنة وراء هذا القيد وتستكشف حلولًا بديلة لتحقيق وظائف مماثلة.

لماذا لا تتوفر مؤشرات الوظائف للمشغلين المدمجين

وفقًا لمعيار C (13.6 / 1)، عوامل التشغيل المضمنة ليست وظائف مشغل عادية، وبالتالي لا يمكن أن يكون لها مؤشرات وظيفية تشير إليها. إنهم يشاركون فقط في حل التحميل الزائد دون خدمة أي غرض آخر.

البديل: استخدام كائنات الوظائف

للتغلب على هذا القيد، يقدم معيار C كائنات وظيفية، والتي توفر وظيفة مماثلة للكائنات المضمنة. المشغلين من خلال الكائنات القالبة. على سبيل المثال، بالنسبة للمقارنات، يتم تعريف كائنات دالة مثلequal_to، وgreater، وless_equal. يمكن استخدام هذه الكائنات كوسائط مؤشر دالة.

مثال

في مقتطف التعليمات البرمجية المقدم، الهدف هو مقارنة عددين صحيحين داخل فئة القالب. باستخدام تقنية الكائنات الوظيفية، يمكن تحقيق ذلك على النحو التالي:

class MyAction {
  bool operator()() {
    if (fnCompare_(arg0_, arg1_)) {
      // do this
    } else {
      // do s.th. else
    }
  }
};

هنا، fnCompare_ يمكن أن يكون كائن دالة مثل std::equal_to لإجراء المقارنة.

عوامل التشغيل من النوع القياسي

بالإضافة إلى الكائنات الوظيفية ، يمكن أيضًا استخدام عوامل تشغيل المكتبة القياسية كمؤشرات وظيفية. ومع ذلك، يجب الإشارة إلى المثيل الخاص بالقالب. على سبيل المثال:

std::basic_string a("test"), b("test2");
std::cout >(a, b, &std::operator );

الاستنتاج

بينما لا تكون مؤشرات الوظائف متاحة مباشرة للبني- في العوامل القياسية، تسمح الحلول البديلة التي توفرها الكائنات الوظيفية وعوامل التشغيل من النوع القياسي بوظائف مكافئة. تتيح هذه البدائل استخدام عوامل تشغيل قياسية محددة كمؤشرات وظيفية، ومعالجة القيود التي تقدمها عوامل التشغيل المضمنة.

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

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

Copyright© 2022 湘ICP备2022001581号-3