C++مثال يوضح كيفية استدعاء دالة موجودة في الكلاس الأب
في المثال التالي قمنا بتعريف كلاس إسمه Base
يحتوي على دالة إسمها printMsg
.
بعدها قمنا بتعريف كلاس إسمه Derived
يرث من الكلاس Base
و قمنا فيه بإعادة تعريف الدالة printMsg
و دالة أخرى إسمها printBoth
.
في الدالة printBoth()
قمنا باستدعاء الدالة printMsg()
التي ورثها الكلاس Derived
و الدالة printMsg()
التي تم إعادة تعريفها فيه.
في الأخير قمنا بإنشاء كائن من الكلاس Derived
و من ثم استدعاء كل الدوال التي يملكها.
مثال
using namespace std; // print يحتوي على دالة واحدة إسمها Base هنا قمنا بتعريف كلاس إسمه class Base { public: void print() { cout << "Base::print() \n"; } }; // printBoth أيضاً و دالة أخرى إسمها print و فيه قمنا بتعريف دالة إسمها Base يرث من الكلاس Derived هنا قمنا بتعريف الكلاس class Derived : public Base { public: void print() { cout << "Derived::print() \n"; } void printBoth() { // printBoth() عند استدعاء الدالة Base::print(); // Base الموجودة في الكلاس print() سيتم استدعاء الدالة print(); // الموجودة في نفس الكلاس print() ثم استدعاء الدالة } }; // main() هنا قمنا بتعريف الدالة int main() { // d إسمه Derived هنا قمنا بإنشاء كائن من الكلاس Derived d; // Derived و التي تم تعريفها في الكلاس d من الكائن print() هنا قمنا باستدعاء الدالة d.print(); // Base و التي تم تعريفها في الكلاس d من الكائن print() هنا قمنا باستدعاء الدالة d.Base::print(); // و التي ستستدعي كلتا الدالتين السابقتين Derived التي تم تعريفها في الكلاس d من الكائن print() هنا قمنا باستدعاء الدالة d.printBoth(); return 0; }
سنحصل على النتيجة التالية عند التشغيل.
Base::print() --> نتيجة إستدعاء الدالة في السطر 40
Base::print() --> نتيجة إستدعاء الدالة في السطر 43
Derived::print() --> نتيجة إستدعاء الدالة في السطر 43