وظائف الصديق في C ++ وحالة الاستخدام مع أمثلة

نشرت: 2022-10-22

إخفاء البيانات هو أسلوب أساسي لتطوير البرمجيات يستخدم على نطاق واسع في لغات البرمجة الموجهة للكائنات (OOPs). يقيد الوصول إلى أعضاء البيانات الخاصة من خارج الفصل الدراسي. ومع ذلك ، فإن ميزة C ++ المعروفة باسم وظيفة الصديق تتعارض مع مبدأ إخفاء البيانات.

في هذه المقالة ، ستتعلم ما هي وظيفة الصديق في C ++ ، وما هي فئة الأصدقاء ، وتستكشف بعض حالات الاستخدام مع الأمثلة.

تحقق من دوراتنا التكنولوجية المجانية لتتفوق على المنافسة.

جدول المحتويات

ما هي وظيفة الصديق في C ++؟

وظيفة صديق في C ++ هي وظيفة معلنة خارج الفصل ولكن لها حق الوصول إلى الأعضاء الخاصين والمحميون في الفصل. على الرغم من أنه لا يمكن الوصول إلى الأعضاء الخاصين من فئة معينة إلى وظائف غير الأعضاء ، فإن إعلانهم كوظائف صديقة يمنحهم إمكانية الوصول إلى أعضاء الفئات الخاصين والمحميون.

تحقق من شهادة upGrad المتقدمة في DevOps

خصائص وظيفة الصديق

تتميز وظيفة الصديق في C ++ بالخصائص التالية:

  • وظيفة الصديق خارج نطاق الفصل الذي تم التصريح عنه كصديق
  • يمكن أن تكون وظيفة الصديق إما عضوًا في فئة أو وظيفة معلنة خارج نطاق الفصل الدراسي
  • لا تقتصر وظيفة الصديق على فئة واحدة.

استكشف دوراتنا التدريبية الشهيرة في هندسة البرمجيات

ماجستير العلوم في علوم الكمبيوتر من جامعة جون مورس بليفربول و IIITB برنامج شهادة الأمن السيبراني من معهد كاليفورنيا للتكنولوجيا CTME
برنامج تدريب تطوير المكدس الكامل برنامج PG في Blockchain
برنامج PG التنفيذي في تطوير Full Stack
عرض جميع دوراتنا أدناه
دورات هندسة البرمجيات

  • إن استدعاء وظيفة صديق يشبه استدعاء أي وظيفة عادية للفصل دون استخدام الكائن
  • لا يمكننا استدعاء وظيفة الصديق باستخدام الكائن لأنها ليست في نطاق الفئة
  • وظائف الأصدقاء في C ++ لها كائنات كوسيطات
  • يمكننا أن نعلن عن وظيفة صديق سواء في الجزء الخاص أو العام
  • لا يمكن الوصول إلى أسماء الأعضاء مباشرة من خلال وظيفة صديق ، ويجب أن تستخدم عامل عضوية النقطة واسم الكائن مع اسم العضو

تحقق من شهادة upGrad المتقدمة في الأمن السيبراني

بناء جملة وظيفة الصديق

للإعلان عن وظيفة الصديق ، نستخدم كلمة الصديق داخل جسم الفصل. صيغة وظيفة الصديق هي:

فئة className {

… ..…

صديق returnType functionName (قائمة arg) ؛

… ..…

}

مهارات تطوير البرمجيات عند الطلب

دورات جافا سكريبت دورات جافا الأساسية دورات هياكل البيانات
دورات Node.js دورات SQL دورات تطوير مكدس كاملة
دورات NFT دورات DevOps دورات البيانات الضخمة
دورات React.js دورات الأمن السيبراني دورات الحوسبة السحابية
دورات تصميم قواعد البيانات دورات بايثون دورات العملات المشفرة

إذا قمنا بتقسيم بناء الجملة ، فإليك ما يعنيه كل مصطلح:

  • الصديق هو الكلمة الأساسية التي تدل على أن الوظيفة هي وظيفة صديق
  • returnType هو نوع إرجاع الدالة
  • functionName هو اسم الوظيفة الذي جعله صديقًا للفصل
  • قائمة الحجج هي الحجج التي سنمررها

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

مثال على وظيفة صديق C ++

الآن ، دعونا نلقي نظرة على بعض البرامج لتوضيح وظيفة الصديق.

مثال 1: وظيفة صديق C ++ لطباعة ارتفاع المربع

# تضمين <iostream>

استخدام اسم للمحطة؛

مربع الفصل

{

خاص:

ارتفاع كثافة العمليات

عام:

Box (): الارتفاع (0) {}

صديق int printHeight (صندوق) ؛ // وظيفة الصديق

} ؛

int printHeight (مربع h)

{

ح - الارتفاع + = 40 ؛

العودة ح.

}

انت مين()

{

صندوق ح ؛

cout << "ارتفاع الصندوق:" << printHeight (h) << endl؛

العودة 0 ؛

}

اقرأ مقالاتنا الشهيرة المتعلقة بتطوير البرمجيات

كيف يتم تنفيذ تجريد البيانات في Java؟ ما هي الطبقة الداخلية في جافا؟ معرفات Java: التعريف والنحو والأمثلة
فهم التغليف في OOPS بأمثلة شرح حجج سطر الأوامر في لغة سي أهم 10 ميزات وخصائص للحوسبة السحابية في عام 2022
تعدد الأشكال في جافا: المفاهيم والأنواع والخصائص والأمثلة الحزم في Java وكيفية استخدامها؟ برنامج Git التعليمي للمبتدئين: تعلم Git من الصفر

انتاج:

ارتفاع الصندوق: 40

مثال 2: عندما تكون وظيفة صديق C ++ صديقة لفئتين

# تضمين <iostream>

استخدام اسم للمحطة؛

// إعلان إلى الأمام

فئة ClassQ ؛

فئة ClassP {

عام:

// المُنشئ لتهيئة numP إلى 12

ClassP (): numP (12) {}

خاص:

عدد int numP ؛

// إعلان وظيفة الصديق

إضافة صديق int (ClassP ، ClassQ) ؛

} ؛

فئة ClassQ {

عام:

// المُنشئ لتهيئة numQ إلى 1

ClassQ (): numQ (1) {}

خاص:

عدد int numQ ؛

// إعلان وظيفة الصديق

إضافة صديق int (ClassP ، ClassQ) ؛

} ؛

// الوصول إلى أعضاء كلا الفئتين

int add (ClassP objectP، ClassQ objectQ) {

إرجاع (objectP.numP + objectQ.numQ) ؛

}

انت مين() {

كائن ClassP ؛

كائن ClassQQ ؛

cout << “Sum:” << add (objectP، objectQ)؛

العودة 0 ؛

}

انتاج:

المجموع: 13

في المثال أعلاه ، أعلنت الفئة P والفئة Q عن إضافة () كوظيفة صديق ، مما يمنحها إمكانية الوصول إلى البيانات الخاصة لكل من الفئتين. علاوة على ذلك ، فإن وظيفة الصديق داخل الفئة P تستخدم الفئة Q.

لذلك ، فإننا نقدم إعلانًا أماميًا عن الفئة Q في البرنامج.

تنفيذ وظيفة الصديق

للحصول على فكرة أفضل عن وظيفة الصديق في C ++ ، سننظر الآن في الطريقتين اللتين يمكننا من خلالهما تنفيذ وظيفة الصديق.

  1. تنفيذ وظيفة صديق في C ++ من خلال طريقة من فئة أخرى

نعلن عن فئة الأصدقاء في C ++ عندما نحتاج إلى الوصول إلى الأعضاء الخاصين والمحميون من فئة أخرى تم إعلانها كصديق. من الممكن أيضًا إعلان وظيفة عضو واحد لفئة أخرى كصديق.

فئة class_name

{

friend class friend_class؛ // إعلان فئة الصديق

} ؛

فئة friend_class

{

} ؛

في الإعلان أعلاه عن فئة الأصدقاء ، فإن جميع الوظائف في friend_class هي وظائف صديق class_name .

فيما يلي مثال بسيط لتوضيح تنفيذ وظائف الصديق من خلال طريقة من فئة أخرى:

# تضمين <iostream>

استخدام اسم للمحطة؛

فئة أ

{

int ص = 4 ؛

فئة الأصدقاء ب ؛ // فئة الأصدقاء

} ؛

الصف ب

{

عام:

عرض باطل (A & a)

{

cout << ”قيمة p هي:” << ap؛

}

} ؛

انت مين ()

{

أ أ ؛

ب ب ؛

  1. عرض (أ) ؛

العودة 0 ؛

}

انتاج:

قيمة ص هي: 4

  1. تنفيذ وظيفة عالمية

يتيح لنا تنفيذ وظيفة صديق عالمي الوصول إلى جميع الأعضاء المحميون والخاصون في إعلان الفصل العالمي. هذا مثال:

# تضمين <iostream>

استخدام اسم للمحطة؛

مساحة الفصل

{

الباحث أ ؛

الباحث ب ؛

كثافة العمليات ج ؛

عام:

مجموعة بيانات باطلة (int x، int y، int z) ؛

عرض باطل (باطل) ؛

عامل الفراغ الصديق- (الفضاء & ق) ؛

} ؛

مساحة فارغة :: setdata (int x، int y، int z)

{

أ = س ؛ ب = ص ؛ ج = ض ؛

}

مساحة فارغة :: عرض (باطل)

{

cout << a << ”“ << b << ”“ << c << “\ n” ؛

}

عامل باطل- (مسافات ومساحات)

{

سا = - سا ؛

sb = - sb ؛

الشوري = - الشوري ؛

}

انت مين ()

{

الفضاء ق ؛

  1. setdata (9،2،3) ؛

cout << "s:" ؛

  1. عرض ()؛

-س؛

cout << "- s:" ؛

  1. عرض ()؛

العودة 0 ؛

}

انتاج:

ق: 9 2 3

-س: -9 -2 -3

في المثال أعلاه ، عامل التشغيل- هو وظيفة الصديق التي أعلنا عنها عالميًا في نطاق الفصل الدراسي.

ما هي فئة الأصدقاء في C ++؟

على الرغم من أنه من الواضح الآن ، أن فئة الأصدقاء هي فئة لديها إمكانية الوصول إلى كل من الأعضاء الخاصين والمحميون في الفصل الذي تم الإعلان عنه كصديق.

بعبارات بسيطة ، يتم استخدام فئة الأصدقاء في C ++ عندما نريد أن يتمكن الفصل من الوصول إلى أعضاء خاصين ومحميون لفئة أخرى.

وظائف العضو في الفصل التي نعلنها كصديق لفصل آخر هي وظائف صديقة لفئة الأصدقاء. وبالتالي ، فإن وظائف الصديق تربط كلا الفئتين.

بناء جملة فئة الأصدقاء

إليك صيغة فصل الصديق في C ++:

فئة R ؛ // إعلان إلى الأمام

فئة P {

// تصريحات أخرى

فئة صديق R ؛

} ؛

فئة R {

// الإعلانات

} ؛

في الرسم التوضيحي أعلاه ، تعتبر الفئة R صديقة للفئة P. ونتيجة لذلك ، يمكن للفئة R الوصول إلى أعضاء البيانات الخاصة في الفئة P. ومع ذلك ، فإن العكس ليس صحيحًا ، ولا يمكن للفئة P الوصول إلى أعضاء البيانات الخاصة بالفئة R .

أيضًا ، يتم إعطاء التصريح الأمامي لإبلاغ المترجم بوجود كيان قبل تعريفه بشكل قاطع. هنا ، نعلن عن الفئة R باستخدام التصريح الأمامي لإخطار المترجم بوجودها. يسمح لنا الإعلان الأمامي باستخدام كائنات الفئة R في الفئة P.

ما فائدة وظيفة الصديق في C ++؟

تلخيصًا لمناقشتنا ، دعونا نلقي نظرة على الاستخدامين الأساسيين لوظيفة الصديق في C ++:

  • أولاً ، نستخدم وظيفة الصديق عندما نريد الوصول إلى الأعضاء الخاصين والمحميون في الفصل. للقيام بذلك ، سنطلب بشكل عام كائنات تلك الفئة للوصول إلى الأعضاء الخاصين والمحميون. ومع ذلك ، فإن وظيفة الصديق تلغي الموقف الذي تحتاج فيه الوظيفة إلى أن تكون عضوًا في الفصل للوصول.
  • استخدام آخر لوظيفة الصديق في C ++ هو التحميل الزائد للمشغل. تُعرف الدوال التي لها نفس الاسم ولكن بأرقام ووسائط مختلفة باسم وظائف التحميل الزائد. وظائف الأصدقاء في C ++ تجد استخدامها في التحميل الزائد للمشغل.

في هذه الحالة ، تسبق وظيفة التحميل الزائد للمشغل الكلمة الأساسية الصديقة وتعلن نطاق فئة الوظيفة. عند التحميل الزائد بواسطة دالة الصديق ، تأخذ العوامل الثنائية وسيطين صريحين بينما تأخذ العوامل الأحادية وسيطة واحدة. تعمل بنفس طريقة وظيفة المشغل الثنائي ، باستثناء أن تنفيذ وظيفة مشغل الصديق يتم خارج نطاق الفصل الدراسي.

هذا يقودنا إلى نهاية مناقشتنا حول وظيفة الصديق في C ++ واستخداماتها. آمل أن يساعدك هذا في زيادة معرفتك بـ C ++.

أيضًا ، إذا كنت تتطلع إلى بدء حياتك المهنية كمطور متكامل ، فإن upGrad تقدم برنامجًا للدراسات العليا التنفيذية عبر الإنترنت بالكامل في تطوير البرمجيات - تخصص في تطوير مكدس كامل لمدة 13 شهرًا بالتعاون مع IIIT Bangalore.

يسلط الضوء على البرنامج:

  • التعرض العملي لدراسات الحالة والمهام ذات الصلة بالصناعة
  • 450+ ساعة من التعلم بنطاق 360 درجة
  • 10+ من أفضل أدوات البرمجة واللغات
  • جلسات إرشاد مهني 1: 1 مع مرشدين في هذا المجال
  • 24/7 دعم الطلاب

اشترك اليوم لتحصل على مزايا upGrad الحصرية اليوم!

ما هي وظيفة الصديق في C ++؟

وظيفة الصديق في C ++ هي وظيفة ليست عضوًا في فئة ولكن لها حق الوصول إلى أعضائها الخاصين والمحميون.

كيف تعلن وظيفة صديق؟

تتمتع وظيفة الصديق بإمكانية الوصول إلى بيانات الفصل الخاصة والمحمية. للإعلان عن وظيفة صديق ، نستخدم الكلمة الأساسية الخاصة بالصديق داخل جسم الفصل.

كيف تصنع صديقًا دراسيًا في C ++؟

نستخدم الكلمة الأساسية صديق للإعلان عن الفصل كصف أصدقاء في C ++. تتيح الكلمة الأساسية لأي فئة الوصول إلى أعضاء خاصين ومحميون من فئات ووظائف أخرى.