C++مثال حول تخصيص تعريف العامل ++
في المثال التالي قمنا بتعريف كلاس إسمه Player
يحتوي على ثلاث متغيرات تمثل المعلومات العامة التي يمكن أن يمتلكها اللاعب مثل رتبته grade
في اللعبة و سرعته speed
و كمية المال money
التي جمعها, بالإضافة إلى دالة إسمها printInfo
تعرض قيم هذه المتغيرات بشكل مرتب.
هنا افترضنا أن أي لاعب جديد ستكون رتبته تساوي 1
و سرعته تساوي 1
و لا يملك أي مال.
عند ترقية اللاعب سيتم زيادة رتبته و سرعته بمقدار 1
و سيتم إعطاؤه مبلغ 1000
أيضاً.
لنريك كيف يمكن أن تفعل Overload لعامل, قمنا بتخصيص العامل ++
لكي نستخدمه كلما أردنا ترقية اللاعب.
في الأخير بإنشاء كائن من الكلاس Player
(أي كأننا قمنا بإنشاء لاعب) و من ثم تجربة ترقيته بواسطة العامل ++
.
مثال
using namespace std; // الذي يمثل اللاعب Player هنا قمنا بتعريف الكلاس class Player { public: // هنا قمنا بتعريف خصائص الكلاس int grade; int speed; int money; // هنا قمنا بتعريف كونستركتور الكلاس بهدف إعطاء قيم أولية لخصائص الكائن الذي يتم إنشاؤه من الكلاس Player() { grade = 1; speed = 1; money = 0; } // هنا قمنا بتعريف دالة تقوم بطباعة قيم خصائص الكائن بشكل مرتب عندما يتم استدعاؤه void printInfo() { cout << "Grade = " << grade << endl; cout << "Speed = " << speed << endl; cout << "Money = " << money << endl; cout << "----------------\n"; } // هنا قمنا بتعريف ما سيحدث عند استدعاء الرمز ++ من أي كائن ننشئه من الكلاس void operator++ (int) { // سيضاف عليها 1000 money سيضاف عليها 1 و قيمة speed سيضاف عليها 1 و قيمة grade قيمة grade += 1; speed += 1; money += 1000; } }; // main() هنا قمنا بتعريف الدالة int main() { // أي لاعب جديد ,Player هنا قمنا بإنشاء كائن من الكلاس Player player; // player لعرض القيم الإفتراضية التي يملكها الكائن printInfo() هنا قمنا باستدعاء الدالة player.printInfo(); // حتى يتم ترقيته player هنا قمنا باستدعاء الرمز ++ من الكائن player++; // player من جديد لعرض القيم التي أصبحها يملكها الكائن printInfo() هنا قمنا باستدعاء الدالة player.printInfo(); return 0; }
سنحصل على النتيجة التالية عند التشغيل.
Grade = 1 Speed = 1 Money = 0 ---------------- Grade = 2 Speed = 2 Money = 1000 ----------------