Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

C++مثال يوضح كيفية استدعاء دالة موجودة في الكلاس الأب

في المثال التالي قمنا بتعريف كلاس إسمه Base يحتوي على دالة إسمها printMsg.
بعدها قمنا بتعريف كلاس إسمه Derived يرث من الكلاس Base و قمنا فيه بإعادة تعريف الدالة printMsg و دالة أخرى إسمها printBoth.

في الدالة printBoth() قمنا باستدعاء الدالة printMsg() التي ورثها الكلاس Derived و الدالة printMsg() التي تم إعادة تعريفها فيه.

في الأخير قمنا بإنشاء كائن من الكلاس Derived و من ثم استدعاء كل الدوال التي يملكها.

مثال

main.cpp
#include <iostream>
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;
}
#include <iostream> 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; }

سنحصل على النتيجة التالية عند التشغيل.

Derived::print()     -->   نتيجة إستدعاء الدالة في السطر 37
Base::print()        -->   نتيجة إستدعاء الدالة في السطر 40
Base::print()        -->   نتيجة إستدعاء الدالة في السطر 43
Derived::print()     -->   نتيجة إستدعاء الدالة في السطر 43