كيفية تنفيذ التحميل الزائد للمشغل في ++ C؟



في هذه المقالة سوف نلقي نظرة على مفهوم آخر موجه للكائنات يجعل من السهل التعامل مع المشغل. سوف نتعلم تحميل العميل الزائد في C ++.

في هذه المقالة سوف نستكشف مفهومًا آخر موجهًا للكائنات يجعل التعامل مع المشغل أمرًا سهلاً. هذا هو أننا ندخل في تفاصيل المشغل التحميل الزائد في C ++ . سيتم تغطية المؤشرات التالية في هذه المقالة ،

لذا ، دعنا نبدأ بهذه المقالة حول التحميل الزائد للمشغل في C ++.





التحميل الزائد في C ++

إذا أنشأنا عضوين أو أكثر من نفس الفئة لهما نفس الاسم ولكنهما مختلفان في عدد أو نوع المعلمة ، فإنه يُعرف باسم C ++ overloading.



في C ++ ، يمكننا زيادة التحميل:

  • طرق
  • الصانعين
  • الخصائص المفهرسة

ذلك لأن هؤلاء الأعضاء لديهم معلمات فقط.

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.



أنواع التحميل الزائد في C ++

  • وظيفة التحميل الزائد
  • زيادة الحمولة على المشغل

التحميل الزائد - التحميل الزائد على المشغل في C ++ - Edureka

كيفية تنفيذ قائمة مرتبطة في ج

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.

لماذا يستخدم المشغل الزائد؟

يمكن كتابة برامج C ++ دون معرفة التحميل الزائد للمشغل. ثم أيضًا ، يتم استخدام عامل التشغيل بشكل عميق من قبل المبرمجين لجعل البرنامج بديهيًا. فمثلا،

يمكننا استبدال الكود مثل:

الحساب = جمع (قسمة (أ ، ب) ، اضرب (أ ، ب))

للمعادلة

الحساب = (أ / ب) + (أ * ب)

يوفر التحميل الزائد للمشغل طريقة بسيطة وسهلة لتطوير تعريفات جديدة لمعظم المشغلين في C ++. من خلال المعرفة الكافية ، يمكننا تقريبًا إنشاء لغة جديدة خاصة بنا من خلال الاستخدام الإبداعي للوظيفة وتقنيات التحميل الزائد للمشغل. يمكننا زيادة التحميل على جميع المشغلين في C ++ باستثناء ما يلي:
● عامل النطاق (: :)
● عامل الحجم (Sizeof)
● محدد العضو (.)
● محدد مؤشر العضو (*)
● عامل التشغيل الثلاثي (؟ :)

تركيب الحمولة الزائدة للمشغل

return_type class_name:: عامل التشغيل op (uments_list) {// function body}

حيث يكون نوع الإرجاع هو نوع القيمة التي تُرجعها الوظيفة. class_name هو اسم الفصل.

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.

تنفيذ التحميل الزائد للمشغل في C ++

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

ما هو الفرق بين وظائف المشغل والوظائف العادية؟

وظائف المشغل هي نفس الوظائف العادية. الاختلاف الوحيد هو أن اسم وظيفة المشغل هو دائمًا الكلمة الأساسية للمشغل متبوعة برمز المشغل ويتم استدعاء وظائف المشغل عند استخدام المشغل المقابل.

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.

أنواع نهج التحميل الزائد

يمكن أن يتم التحميل الزائد على المشغل باستخدام ثلاث طرق ، هم

  • الزائد عامل أحادي.
  • عامل التشغيل الثنائي الزائد.
  • زيادة التحميل على المشغل الثنائي باستخدام وظيفة صديق.

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.

عامل أحادي التحميل الزائد

دعونا نفكر في عامل التشغيل '-' الأحادي. عامل ناقص عند استخدامه كوحدة أحادية فإنه يتطلب فقط معامل واحد. نعلم أن هذا المشغل يغير علامة المعامل عند تطبيقه على متغير بيانات أساسي. دعونا نرى كيفية زيادة تحميل هذا المشغل بحيث يمكن تطبيقه على كائن بنفس الطريقة التي يتم بها تطبيقه على متغير int أو float. يجب أن يقلل الطرح الأحادي ، عند تطبيقه على كائن ، كل عنصر من عناصر البيانات الخاصة به.

مثال:

# تضمين باستخدام مساحة الاسم فئة std الارتفاع {public: // Member Objects int feet، inch // Constructor لتهيئة قيمة الكائن الارتفاع (int f، int i) {feet = f inch = i} // Overloading (-) عامل التشغيل إلى إجراء إنقاص // عملية عامل فراغ كائن الارتفاع- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

انتاج:

الشيف مقابل الدمية مقابل أنسبيل

تفسير:
في المثال أعلاه ، قمنا بتحميل عامل '-' أحادي زيادة في التحميل لأداء التناقص في متغيرين من فئة الارتفاع. نقوم بتمرير معلمتين للمنشئ وحفظ قيمهما في متغير القدم والبوصة. ثم نحدد وظيفة التحميل الزائد للمشغل (عامل باطل- ()
) حيث يتم إنقاص المتغيرين بموضع واحد.
عندما نكتب -h1 ، فإنه يستدعي وظيفة التحميل الزائد للمشغل ويقلل من القيم التي تم تمريرها إلى المنشئ.

المضي قدمًا في هذه المقالة حول تحميل المشغل الزائد في C ++.

زيادة التحميل على المشغل الثنائي

إنه حمل زائد على عامل يعمل على عاملين. لنأخذ نفس المثال من فئة الارتفاع ، ولكن هذه المرة ، أضف كائنين للارتفاع h1 و h2.

مثال:

#include using namespace std class Height {public: int feet، inch Height () {feet = 0 inch = 0} height (int f، int i) {feet = f inch = i} // Overloading (+) لتشغيل إضافة // كائنين مسافة باستخدام عامل التشغيل الثنائي عامل الارتفاع + (الارتفاع & d2) // استدعاء حسب المرجع {// إنشاء كائن لإرجاع الارتفاع h3 // إجراء إضافة القدم والبوصة h3.feet = feet + d2.feet h3. inch = inch + d2.inch // إرجاع الكائن الناتج h3}} int main () {Height h1 (3، 7) Height h2 (6، 1) Height h3 // استخدام عامل التحميل الزائد h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

انتاج:

تفسير:
عامل الارتفاع + (الارتفاع & h2) ، هنا إرجاع نوع الوظيفة هو الفئة الارتفاع وبالتالي فإنه يقوم بإرجاع كائن h3 من فئة الارتفاع. في السطر h3 = h1 + h2 ، تستدعي h1 وظيفة المشغل لكائنات فئاتها وتأخذ h2 كمعامل ، ثم نطبق h3.feet = feet + d2.feet و h3.inch = inch + d2.inch التي تخزن مجموع قيم المتغيرات بالقدم والبوصة في المتغيرات المرتبطة بالكائن h3.
عندما تستدعي العبارة 'h3 = h1 + h2' الدالة overloaded للمشغل ، أخذ الكائن h1 مسؤولية استدعاء الوظيفة ويلعب h2 دور الوسيطة التي تم تمريرها إلى الوظيفة. بيان الاستدعاء أعلاه يعادل h3 = h1.operator + (h2) وبالتالي يتم الوصول إلى عضو بيانات h2 مباشرة ويتم الوصول إلى عضو البيانات h2 (الذي يتم تمريره كوسيطة) باستخدام عامل التشغيل dot.

قواعد التحميل الزائد على المشغل

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

وبالتالي فقد وصلنا إلى نهاية هذه المقالة حول 'زيادة تحميل المشغل في C ++'. إذا كنت ترغب في معرفة المزيد ، تحقق من Java Training بواسطة Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت. إديوريكا تم تصميم الدورة التدريبية لتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في هذه المدونة وسنعاود الاتصال بك في أقرب وقت ممكن.