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

لماذا لا يدعم `std::اختياري` أنواع المراجع؟

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

 Why Doesn\'t `std::optional` Support Reference Types?

أنواع المراجع الاختيارية: لماذا غيابهم في std::اختياري والبدائل

فئة المكتبة القياسية::اختيارية، موجودة كـ std ::تجريبي::اختياري في libc، ويفتقر بشكل خاص إلى تخصصات أنواع المراجع. وهذا يثير مسألة ما إذا كانت هذه التخصصات ستكون مفيدة.

مزايا أنواع المراجع الاختيارية

يمكن أن توفر أنواع المراجع الاختيارية مزايا مثل:

  • الكفاءة: المراجع بشكل عام أكثر كفاءة من النسخ، مما قد يقلل من استخدام الذاكرة وعبء الأداء.
  • إيجاز التعبير: أنواع المراجع من شأنها تبسيط التعبيرات التي تتضمن كائنات اختيارية، حيث يمكن إلغاء مرجعيتها مباشرة دون إلغاء التغليف الصريح.

مبررات الغياب

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

أعرب أعضاء اللجنة عن مخاوفهم بشأن دلالات المراجع الاختيارية. لقد كانوا قلقين بشأن المشكلات المحتملة المتعلقة بعمر الكائن وملكيته، حيث يمكن أن تشير المراجع الاختيارية إلى كائنات تم تدميرها بالفعل أو غير صالحة.

الخيارات البديلة بينما std: :اختياري لا يلبي الأنواع المرجعية، تقدم المكتبة القياسية حلولاً بديلة:

]

القيم الاختيارية:
    std::اختياري متخصص في أنواع القيم، مما يوفر القدرة على تمثيل القيمة التي قد تكون أو لا تكون موجودة.
  • std::reference_wrapper:
  • تسمح هذه الفئة بإنشاء مراجع تتجاوز عمر مرجع الكائن الأصلي. ومع ذلك، فإنه لا يحتوي على دلالات "ربما موجودة" لـ std::اختياري.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3