الإعادة بالإشارة في ++C
الإعادة بالإشارة
بعد أن تعرفت علي المتغيرات الخارجية , نقدم لك أحد معالم لغة السي ++ العجيبة . فبالإضافة إلي إمكانية ترحيل المعاملات بالإشارة , يمكن أيضا أن تعاد بالإشارة , والسبب في اللجوء لذلك قد لا يكون واضحا , إنه إتاحة الفرصة لك لأن تجعل نداء الدالة إلي يسار علامة التساوي , وهو مفهوم غريب , فنعطيك مثالا توضحه .
retref.cpp
// retref.cpp
// returning reference values
#include <iostream.h>
#include <conio.h>
int x; // global variable
int& setx(); // function declaration
void main()
{ // set x to a value, using
setx() = 92; // function call on left side
cout << "\nx=" << x; // display new value in x
getche();
}
int& setx()
{
return x; // returns the value to be modified
}
هنا أعلنت الدالة وعرفت علي أن الإعادة بالإشارة , بإضافة الرمز "&" للمعامل المعاد , فكان الإعلان علي الصورة :
Int& setx();
وعرف المتغير x تعريفا خارجيا . وهنا , وهو الغريب في الأمر , يمكنك أن تستدعي الدالة وهي في مكان معكوس , أي لليسار , كالتالي :
Setx() = 92;
وكانت النتيجة تخصيص العدد 92 للمتغير x كما يبين خرج البرنامج .
ولا يزال السبب من اللجوء لهذا الأسلوب غامضا , وهو لن يتكشف قبل الفصل التاسع , حينما نتحدث عن زيادة تحميل العمليات , وحتى يحين التنبه لشيئين :
· لا يمكن إعادة مقادير ثابتة بهذه الطريقة , وإذا حاولت ذلك بأن استخدمت الأمر التالي في مثالنا :
return 3; تحصل علي رسالة خطأ بأن 1value أي قيمة إلي اليسار , مطلوبة .
· لا يمكن استخدامها مع المتغيرات الآلية . فالمتغيرات الآلية كما قلنا تختفي مع إعادة الدالة لقيمة وانتهاء عملها وليس من معني للإشارة لشئ قد اختفي .
تعليقات
إرسال تعليق