الحفاظ على قيم R باستخدام مراجع Const: لغز A C
في لغة C، يُسمح بتمرير قيم R (كائنات مؤقتة) بواسطة مرجع ثابت، على عكس المراجع العادية . خذ بعين الاعتبار البرنامج التالي:
void display(const int& a) { cout يسمح البرنامج بتمرير كل من القيم l وقيم r إلى وظيفة العرض، على الرغم من وضع علامة على المرجع على أنه const. هذا السلوك محير، حيث أن المراجع الثابتة ترتبط عادةً بالحفاظ على القيم.
ملحق مدى الحياة لمرجع Const
يكمن مفتاح فهم هذا السلوك في الدلالات. من المراجع الثابتة في C . يعمل المرجع الثابت على إطالة عمر الكائن المشار إليه حتى نهاية النطاق المحتوي. في حالة قيمة r، يمنع هذا بشكل فعال تدمير الكائن المؤقت حتى يخرج المرجع الثابت عن النطاق.
مثال: إطالة عمر قيمة R
في موقعنا على سبيل المثال، يحدث ما يلي عند استدعاء العرض (5):
- يتم إنشاء قيمة r من النوع int بالقيمة 5.
- A يرتبط المرجع const a بهذه القيمة r.
- يعمل المرجع const على إطالة عمر القيمة r حتى نهاية وظيفة العرض.
- يتم استخدام rvalue داخل الوظيفة لطباعة القيمة 5 .
- عندما تعود وظيفة العرض، يخرج مرجع const عن النطاق، ويتم إتلاف قيمة r في النهاية.
يوضح هذا كيفية استخدام مرجع const يمكن أن يستمر في الإشارة إلى قيمة r، مما يسمح لها بالبقاء في الوجود على الرغم من أنه سيتم تدميرها على الفور.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3