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

C++مثال حول تخصيص تعريف العامل ++

في المثال التالي قمنا بتعريف كلاس إسمه Player يحتوي على ثلاث متغيرات تمثل المعلومات العامة التي يمكن أن يمتلكها اللاعب مثل رتبته grade في اللعبة و سرعته speed و كمية المال money التي جمعها, بالإضافة إلى دالة إسمها printInfo تعرض قيم هذه المتغيرات بشكل مرتب.

هنا افترضنا أن أي لاعب جديد ستكون رتبته تساوي 1 و سرعته تساوي 1 و لا يملك أي مال.
عند ترقية اللاعب سيتم زيادة رتبته و سرعته بمقدار 1 و سيتم إعطاؤه مبلغ 1000 أيضاً.

لنريك كيف يمكن أن تفعل Overload لعامل, قمنا بتخصيص العامل ++ لكي نستخدمه كلما أردنا ترقية اللاعب.

في الأخير بإنشاء كائن من الكلاس Player (أي كأننا قمنا بإنشاء لاعب) و من ثم تجربة ترقيته بواسطة العامل ++.

مثال

main.cpp
#include <iostream>

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