وظيفة الصداقة
في البرمجة الكائنية التوجه ، الدالة الصديقة ، أي "صديقة" لفئة معينة ، هي دالة تُمنح نفس صلاحيات الوصول التي تتمتع بها الطرق إلى البيانات الخاصة والمحمية . [ 1 ]
تُعلن الدالة الصديقة بواسطة الفئة التي تمنح الوصول، لذا تُعدّ الدوال الصديقة جزءًا من واجهة الفئة، مثل الدوال. تسمح الدوال الصديقة باستخدام صيغة بديلة للكائنات، على سبيل المثال f(x)بدلاً من `<Object>` x.f()، أو g(x, y)بدلاً من `<Object> x.g(y)`. وللدوال الصديقة نفس تأثير الدوال على التغليف .
وهناك مفهوم مشابه هو مفهوم فئة الأصدقاء .
حالات الاستخدام
يمكن استخدام هذا الأسلوب في الدوال الودية عندما تحتاج دالة ما إلى الوصول إلى بيانات خاصة في كائنات من فئتين مختلفتين. ويمكن تحقيق ذلك بطريقتين متشابهتين:
- يمكن تعريف دالة ذات نطاق عام أو نطاق مساحة اسم على أنها صديقة لكلا الفئتين.
- يمكن تعريف طريقة من فئة ما على أنها صديقة لطريقة من فئة أخرى.
// تنفيذ دوال الصداقة بلغة C++. استيراد std ؛ // تعريف مسبق للفئة Foo لكي يتم تجميع الكود، على سبيل المثال. class Foo ؛class Bar { private : int a = 0 ; public : // تعريف دالة من الفئة Bar؛ هذه دالة صديقة للفئة Foo void show ( Bar & x , Foo & y ) { std :: println ( " عرض باستخدام دالة من الفئة Bar" ); std :: println ( " Bar::a = {}" , x.a ) ; std :: println ( "Foo::b = {}" , y.b ) ; }}; class Foo { private: int b = 6 ; public: friend void show ( Bar & x , Foo & y ); // تعريف دالة عامة كصديق }; class Foo { private : int b = 6 ; public : friend void show ( Bar & x , Foo & y ); // تعريف دالة عامة كصديق friend void Bar ::show ( Bar & x , Foo & y ); // تعريف صديق من فئة أخرى }; // صديق لـ Bar و Foo، تعريف الدالة العامة void show ( Bar & x , Foo & y ) { std :: println ( " عرض عبر دالة عامة" ); std :: println ( "Bar::a = {}" , x.a ) ; std :: println ( "Foo::b = {}" , y.b ) ; } int main ( ) { Bar a ; Foo b ; show ( a , b ) ; a.show ( a , b ) ; }مراجع
- لغة البرمجة C++ من تأليف بيارن ستروستروب
روابط خارجية
- شرحٌ لوظيفة الصداقة في لغة C++ على موقع CoderSource.net
فئة :
- طريقة (برمجة الحاسوب)
