شرح تجاوز الوظيفة في C ++

نشرت: 2022-11-09

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

ما هي الوظيفة؟

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

بناء جملة دالة C ++: -

return_type function_name (قائمة المعلمات) {

وظيفة الجسم

}

المكونات : -

  • نوع الإرجاع- يشير هذا إلى نوع قيمة الإرجاع للوظيفة.
  • اسم الوظيفة- هذا يمثل اسم الوظيفة التي تشكل توقيع الوظيفة وقائمة المعلمات.
  • المعلمات- هذا عنصر نائب للقيمة التي ترجعها الدالة. عندما يتم استدعاء دالة ، تُعرف القيمة التي تم تمريرها إلى المعلمة باسم المعلمة الفعلية.
  • هيئة الوظيفة- تتكون الهيئة الوظيفية من قائمة العبارات التي تحدد مهمة الوظيفة.

كيفية استدعاء الوظيفة

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

  • اتصل بالقيمة
  • دعوة عن طريق المرجع
  • استدعاء المؤشر

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

تجاوز الوظيفة في C ++

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

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

بناء الجملة لتنفيذ تجاوز الوظيفة في C ++

عندما يتم استدعاء نفس الوظيفة المحددة في كل من الفئة المستندة والمشتقة باستخدام الكائن من الفئة المشتقة ، فإنها تنفذ وظيفة الفئة المشتقة. هذه هي وظيفة تجاوز في C ++.

أدناه هي الصيغة الأكثر استخدامًا لتنفيذ وظيفة تجاوز في C ++:

// C ++ لإظهار تجاوز الوظيفة

# تضمين <iostream>

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

قاعدة فئة {

عام:

طباعة باطلة () {

cout << “Base Function” << endl؛

}

} ؛

فئة مشتقة: قاعدة عامة {

عام:

طباعة باطلة () {

cout << "الوظيفة المشتقة" << endl؛

}

} ؛

انت مين() {

مشتقة مشتقة 1 ؛

مشتق 1.print () ؛

العودة 0 ؛

}

انتاج |

الوظيفة المشتقة

هذا يعيد تعريف وظيفة الفئة الأساسية داخل الفئة المشتقة. وبالتالي ، يجب أن يكون نوع الإرجاع ، ومعلمات_الوظيفة ، و function_name هو نفسه لتحقيق تجاوز الوظيفة.

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

البرامج الشعبية
برنامج PG التنفيذي في تطوير البرمجيات - IIIT ب برنامج شهادة Blockchain - PURDUE برنامج شهادة الأمن السيبراني - PURDUE ماجستير في علوم الكمبيوتر - IIIT ب
مقالات شعبية أخرى
راتب Cloud Engineer في الولايات المتحدة 2021-22 راتب AWS Solution Architect في الولايات المتحدة راتب المطور الخلفي في الولايات المتحدة راتب المطور الأمامي في الولايات المتحدة
راتب مطور الويب في الولايات المتحدة الأمريكية أسئلة مقابلة Scrum Master في عام 2022 كيف تبدأ مهنة في الأمن السيبراني في عام 2022؟ الخيارات المهنية في الولايات المتحدة لطلاب الهندسة

كيف يعمل تجاوز الوظيفة في C ++

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

يوجد أدناه مثال بسيط لتجاوز الوظيفة في C ++ لفهمك بشكل أفضل:

# تضمين <iostream>

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

فئة parent_class

{

عام:

طباعة باطلة افتراضية ()

{

cout << "\ n هذه طريقة print ()"

"من BaseClass" ؛

}

} ؛

class der_class: public parent_class

{

عام:

// تجاوز الوظيفة - تعريف جديد لـ

// طريقة الطباعة للفئة الأساسية

طباعة باطلة ()

{

cout << "\ n هذه طريقة print ()"

"من الفئة المشتقة" ؛

}

} ؛

// كود السائق

انت مين()

{

كائن صنف مشتق ؛

obj.print () ؛

}

الوصول إلى الوظيفة التي تم تجاوزها في C ++

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

// C ++ للوصول إلى الوظيفة التي تم تجاوزها

// in main () باستخدام عامل تحليل النطاق ::

# تضمين <iostream>

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

قاعدة فئة {

عام:

طباعة باطلة () {

cout << “Base Function” << endl؛

}

} ؛

فئة مشتقة: قاعدة عامة {

عام:

طباعة باطلة () {

cout << "الوظيفة المشتقة" << endl؛

}

} ؛

انت مين() {

مشتقة مشتقة 1 ، مشتقة 2 ؛

مشتق 1.print () ؛

// الوصول إلى وظيفة الطباعة () الخاصة بالفئة الأساسية

مشتق2.Base :: print () ؛

العودة 0 ؛

}

انتاج |

الوظيفة المشتقة

وظيفة القاعدة

البيان في النحو. مشتق2.Base :: print () ؛ يتيح الوصول إلى وظيفة print () للفئة الأساسية.

استدعاء وظيفة تم تجاوزها من فئة مشتقة

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

فيما يلي مثال على استخدام وظيفة تجاوز الاستدعاء من فئة مشتقة.

// C ++ لاستدعاء الوظيفة التي تم تجاوزها

// من وظيفة عضو في الفئة المشتقة

# تضمين <iostream>

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

قاعدة فئة {

عام:

طباعة باطلة () {

cout << “Base Function” << endl؛

}

} ؛

فئة مشتقة: قاعدة عامة {

عام:

طباعة باطلة () {

cout << "الوظيفة المشتقة" << endl؛

// وظيفة تم تجاوزها

قاعدة :: طباعة () ؛

}

} ؛

انت مين() {

مشتقة مشتقة 1 ؛

مشتق 1.print () ؛

العودة 0 ؛

}

انتاج |

الوظيفة المشتقة

وظيفة القاعدة

في هذا البرنامج ، تم استدعاء الوظيفة المتجاوزة داخل الفئة المشتقة.

فئة مشتقة: قاعدة عامة {

عام:

طباعة باطلة () {

cout << "الوظيفة المشتقة" << endl؛

قاعدة :: طباعة () ؛

}

} ؛

يقوم الكود Base :: print () ؛، باستدعاء الوظيفة المتجاوزة ضمن الفئة المشتقة.

زيادة التحميل على الوظيفة مقابل تجاوز الوظيفة

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

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

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

استنتاج

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

إذا كنت ترغب في الانضمام إلى دورة تدريبية موثوقة ومتميزة لبدء حياتك المهنية في هذا المجال ، يمكنك التسجيل للحصول على ماجستير العلوم في upGrad's في علوم الكمبيوتر في upGrad. فيما يلي بعض الملامح الرئيسية لهذا البرنامج: -

  • تعلم MERN Stack و Microservices و JavaScript وما إلى ذلك.
  • تعلم مفيد في Cloud Labs
  • جرب الأدوات المستخدمة على Netflix و LinkedIn و Facebook وما إلى ذلك.
  • احصل على المهارات في أكثر من 10 أدوات ولغات للبرمجة
  • 24/7 دعم الطلاب

كيف يحدث تجاوز الوظيفة؟

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

ما هو الفرق بين التحميل الزائد للوظيفة وتجاوز الوظيفة في C ++؟

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

ما هي ميزات التحميل الزائد للوظائف في C ++؟

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