نظرًا لأن الفئة المشتقة تحتوي على الفئة الأساسية، فعندما نقوم بإنشاء فئة مشتقة، سيقوم النظام أولاً بإنشاء فئة أساسية. تجدر الإشارة إلى أن الفئة المشتقة سوف تستوعب جميع أعضاء الفئة الأساسية، ولكنها لا تشمل المُنشئ والمدمر المذكورين لاحقًا، وهذا يعني أنه عند إنشاء فئة مشتقة، فإنها ستستدعي أولاً الفئة الأساسية قبل استدعاء المُنشئ الخاص بها منشئ .
هنا يمكننا التحقق من ذلك من خلال الكود:
#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<Clock'sConstructorCalled!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock (){cout<<AlarmClock'sConstructorCalled!<<endl;}};intmain(){AlarmClockA;return0;}
لقطة الشاشة قيد التشغيل هي كما يلي:
يمكننا أن نرى أنه تم تعريف كائن فئة مشتقة واحد فقط، وسيتم استدعاء مُنشئي الفئة المشتقة والفئة الأساسية تلقائيًا، وأمر الاستدعاء هو استدعاء مُنشئ الفئة الأساسية أولاً ثم مُنشئ الفئة المشتقة .
ما رأيته أعلاه هو طريقة الاتصال الأكثر شيوعًا والأبسط، وهذا ضمني فقط، أي أنه يتم استدعاؤه تلقائيًا دون كتابته. فكيف نسميها عندما يأخذ مُنشئ الفئة الأساسية المعلمات؟ هل هذا جيد؟ كيفية تمرير المعلمات؟
الإجابة: ثم نحتاج إلى إخبار المترجم بشكل صريح، أي كتابته بوضوح وتحديد المعلمات التي سيتم تمريرها.
الشكل العام للكتابة هو:
اسم مُنشئ الفئة المشتقة (عمود قائمة المعلمات الإجمالية): مُنشئ الفئة الأساسية (عمود قائمة المعلمات الفعلية)
على سبيل المثال الكود:
#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<Clock'sConstructorCalled!<<endl;}Clock(inth,intm,ints){this->H=h ;this->M=m;this->S=s;cout<<Clock'sConstructorwithparameterCalled!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock(){cout<<AlarmClock' sConstructorCalled!<<endl;}AlarmClock(inth,intm,ints):Clock(h,m,s){cout<<AlarmClock'sConstructorwithparameterCalled!<<endl;}};intmain(){AlarmClockA(8,10,30) );AlarmClockB;return0;}
يرجى الانتباه إلى مُنشئ الفئة المشتقة. في وقت لاحق، يتم تمرير النقطتين ومعلمات الفئة الأساسية، وتكون المعلمات الموجودة في الفئة الأساسية معلمات فعلية لتحقيق استدعاء المعلمة الصريحة. يرجى التدرب على جهاز الكمبيوتر الخاص بك!
تجدر الإشارة إلى أنه بمجرد وجود مُنشئ بمعلمات في الفئة الأساسية، يجب أن يكون هناك مُنشئ فئة مشتقة بمعلمة صريحة تمر في الفئة المشتقة لتحقيق نقل المعلمات في الفئة الأساسية وإكمال أعمال التهيئة.