الإعادة بالإشارة في ++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 أي قيمة إلي اليسار , مطلوبة .



· لا يمكن استخدامها مع المتغيرات الآلية . فالمتغيرات الآلية كما قلنا تختفي مع إعادة الدالة لقيمة وانتهاء عملها وليس من معني للإشارة لشئ قد اختفي .

التسميات: