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 ----------------