نعلم جميعًا أنه لا يمكن الوصول إلى الأعضاء الخاصين في الفصل إلا من خلال وظائف الأعضاء في الفصل، ولا يمكن الوصول إليهم خارج الفصل. وهذا يعكس أفكار التغليف والإخفاء لتصميم الفئة في C++، وهي الميزة الأساسية لـ C++.
ولكن إذا أردنا حقًا الوصول إلى هؤلاء الأعضاء الخاصين خارج الفصل في بعض الأحيان، فسيصبح الأمر أكثر إزعاجًا، وسنكون في معضلة عدم القدرة على الوصول إليهم أو عدم قدرتنا على الإعلان عنهم كأنواع عامة.
يمكن لظهور الأصدقاء أن يحل هذه المشكلة بشكل جيد للغاية، أي أنه من خلال إعلان الوظيفة الخارجية كنوع صديق ومنحها الحق في الوصول إلى أعضاء خاصين داخل الفصل، يمكنها تحقيق أفضل ما في العالمين. وهذا هو معنى الصداقة، ويمكن رؤيته أيضًا من المعنى الحرفي، مثل "الأصدقاء"، فهو يفتح قناة خضراء.
يمكن أن يكون كائن الصديق وظيفة عامة عامة أو وظيفة عضو في فئة أخرى، وهذا ما يسمى وظيفة صديق . ليس هذا فحسب، بل يمكن أن يكون الصديق أيضًا فئة، وهو ما يسمى فئة الأصدقاء .
بعد فهم معنى الأصدقاء ووظيفتهم، دعونا نلقي نظرة على كيفية استخدامها في لغة C++. بالنسبة لوظائف الأصدقاء، ما عليك سوى الإعلان عن الوظيفة داخل الفصل وإضافة الكلمة الأساسية "صديق" قبلها. تتمتع هذه الوظيفة بأذونات فريدة وتصبح وظيفة صديق.
آخر شيء يجب ملاحظته هو أن الأصدقاء لا ينتمون إلى الفئة نفسها، سواء كانت وظائف أصدقاء أو فئات أصدقاء. ولا يمكن استخدام هذا المؤشر داخل الفصل، ولا يمكن توريثه، تمامًا كما أن أصدقاء الأب ليسوا بالضرورة أصدقاء الابن.
بعد ذلك نكتب برنامج لإيجاد المسافة بين نقطتين:
#include<iostream>#include<math.h>usingnamespacestd;classPoint{private:douplex;doubley;public:Point(doublea,doubleb){x=a;y=b;}intGetPoint(){cout<<(<< x<<,<<y<<;return0;}frienddoubleDistance(Point&a,Point&b);};// أوجد المسافة بين نقطتين doubleDistance(Point&a,Point&b){doublexx;doubleyy;xx=ax-bx;yy = ay-by;returnsqrt(xx*xx+yy*yy);}intmain(){PointA(2.0,3.0);PointB(1.0,2.0);doubledis;dis=Distance(A,B);cout<<dis < <endl;return0;}
يمكنك ملاحظة أن الوظيفة التي تنفذ المسافة بين نقطتين هي وظيفة عامة خارجية نظرًا لأننا نحتاج إلى الوصول إلى الأعضاء الخاصين في الفصل، فإننا نعلن عنها كنوع صديق مقلي في الفصل، راجع السطر الأخير في فئة النقطة. . في هذا الوقت، يتم تجميع التعليمات البرمجية دون مشاكل والإخراج العادي هو:
يمكنك رؤية نتائج الاختبار بنفسك على الكمبيوتر، حاول ألا تعلن عنه كنوع صديق ولاحظ نتائج الخطأ.