في تجاوز الوظيفة ، تعيد الفئة الفرعية تعريف الوظيفة التي تم تعريفها بالفعل في صنفها الأصلي.
إنه يمكّن المبرمج من توفير وظائف مشتقة خاصة بالفئة (على الرغم من أنها محددة في الفئة الأساسية).
الآن ، سنرى بعض الأمثلة ونفهم مفهوم تجاوز الوظيفة في C ++.
مثال 1
لقد حددت فئتين في رمز المثال أدناه - فئة أساسية وفئة مشتقة. تحتوي الفئة الأساسية على وظيفة عضو ، أي disp (). تم توارث Derived_Class من Base_Class. وظيفة disp () موجودة في Base_Class ثم أعيد تعريفها في Derived_Class.
في الدالة main () ، يتم إنشاء كائن من فئة Derived_Class ، أي d. بعد ذلك ، نسمي الدالة disp () على كائن الفئة المشتق ، لذلك سيتم استدعاء الوظيفة في الفئة المشتقة. يتم تجاهل إصدار الفئة الأساسية هنا. يمكنك أن ترى أدناه الإخراج كـ - disp () وظيفة في الفئة المشتقة.
#يشملاستخدام اسم للمحطة؛
// فئة أساسية
فئة Base_Class
{
عام:
فارغفائدة()
{
كلفة<< 'disp () وظيفة في الفئة الأساسية.' <<endl؛
}
}؛
//فئة مشتقة
فئة Derived_Class:Base_Class العامة
{
عام:
فارغفائدة()
{
كلفة<< 'disp () وظيفة في فئة مشتقة' <<endl؛
}
}؛
intالأساسية()
{
المشتقة_الفئة د؛
د.فائدة()؛ // disp () وظيفة على كائن فئة مشتق
إرجاع 0؛
}
مثال 2
في هذا المثال ، سنرى كيفية استدعاء إصدار الفئة الأساسية للوظيفة عن عمد من خلال كائن الفئة المشتق. في تعريف دالة الفئة المشتقة ، نستخدم عامل دقة النطاق [::] لاستدعاء إصدار الفئة الأساسية للوظيفة.
#يشملاستخدام اسم للمحطة؛
فئة Base_Class
{
عام:
فارغفائدة()
{
كلفة<< 'disp () وظيفة في الفئة الأساسية.' <<endl؛
}
}؛
فئة Derived_Class:Base_Class العامة
{
عام:
فارغفائدة()
{
Base_Class::فائدة()؛ // استدعاء إصدار الفئة الأساسية من disp ()
}
}؛
intالأساسية()
{
المشتقة_الفئة د؛
د.فائدة()؛
إرجاع 0؛
}
مثال 3
هذا مثال آخر لتجاوز الوظيفة. في هذا المثال ، أنشأنا فئة الأصل - Animal وفئتان مشتقتان - Duck and Dog. تحتوي الفئة الأساسية ، أي فئة الحيوان ، على صوت وظيفة العضو ().
في الفئة المشتقة / الفئة الفرعية ، أي الكلب ، قمنا بإعادة تعريف نفس الوظيفة ، أي sound () ، لتجاوز تعريف الفئة الأساسية الخاص بها. وبالمثل ، في الفئة المشتقة الأخرى ، أي Duck ، قمنا بإعادة تعريف نفس الوظيفة ، أي الصوت ().
في الوظيفة () الرئيسية ، قمنا بإنشاء كائن الكلب الخاص بـ Dog and duck of Duck. لذلك ، الآن عندما نطلق على وظيفة sound () للكلب والبط ، ستستدعي نسخة الفئة المشتقة من وظيفة sound (). يمكنك رؤية إخراج البرنامج كما هو موضح أدناه. لذلك ، بمساعدة تجاوز الوظيفة ، يمكننا استدعاء الدالة المشتقة الخاصة بالفئة.
#يشملاستخدام اسم للمحطة؛
فئة الحيوان
{
عام:
فارغيبدو()
{
كلفة<< 'صوت الحيوان!' <<endl؛
}
}؛
// الطبقة المشتقة - فئة الكلاب
فئة الكلب:حيوان عام
{
عام:
فارغيبدو()
{
كلفة<< 'صوت الكلب - لحاء.' <<endl؛
}
}؛
// الطبقة المشتقة - فئة البط
فئة بطة:حيوان عام
{
عام:
فارغيبدو()
{
كلفة<< 'صوت البطة - دجال'. <<endl؛
}
}؛
intالأساسية()
{
الكلب كلب؛
بطة بطة؛
كلب.يبدو()؛ // صوت () كلب
بطة.يبدو()؛ // صوت () البطة
إرجاع 0؛
}
استنتاج
في هذه المقالة ، أوضحت تجاوز الوظيفة C ++ . تدعم لغة C ++ تعدد أشكال وقت التشغيل. يساعد تجاوز الوظيفة على تحقيق تعدد أشكال وقت التشغيل في C ++. نظرت هذه المقالة في مفهوم تجاوز الوظيفة وكيفية تحقيق تعدد أشكال وقت التشغيل باستخدام وظيفة تجاوز الوظيفة.