Sobes.tech
Junior

გააზიარე C/C++-ში კონსტანტული მეთოდების შესახებ.

sobes.tech AI

პასუხი AI-სგან

Կոնստանտ մեթոդը դասի մեթոդ է, որը հայտարարվում է const բանալի բառով՝ պարամետրերի ցանկից հետո։ Դա երաշխավորում է, որ մեթոդը չի փոխում դասի օբյեկտի (this) վիճակը:

Հիմնական հատկություններ և կիրառումներ:

  • Անվտանգության երաշխիք: Կոնստանտ մեթոդի ներսում հնարավոր չէ ուղղակի կամ անուղղակիորեն փոխել օբյեկտի ոչ ստատիկ տվյալ անդամները:
  • Համարային կանչեր կոնստանտ օբյեկտների համար: Կոնստանտ մեթոդները կարող են կանչվել ինչպես կոնստանտ, այնպես էլ ոչ կոնստանտ օբյեկտների համար։ Նորից՝ ոչ կոնստանտ մեթոդները կարող են կանչվել միայն ոչ կոնստանտ օբյեկտների համար:
  • Ավելցուկային բեռնաթափում: Մեթոդը կարող է բեռնաթափվել ըստ կոնստանտության։ Դա թույլ է տալիս ունենալ երկու մեթոդ նույն սիգնատուրայով (անուն և պարամետրեր), բայց մեկը կլինի կոնստանտ, մյուսը՝ ոչ:
  • Կիրառություն: Օգտագործվում են մուտքային մեթոդների (getter-ների), որոնք պարզապես վերադարձնում են տվյալ անդամի արժեքը՝ առանց օբյեկտը փոխելու, ինչպես նաև այն ֆունկցիաներում, որոնք ընդունում են կոնստանտ ռեֆերենցիաներ կամ ցուցիչներ օբյեկտների վրա:

Օրինակ՝

class MyClass {
public:
    int getValue() const { // Կոնստանտ մեթոդ
        // Կարող է կարդալ member_ = 10;, բայց չի կարող գրել
        return member_;
    }

    void setValue(int val) { // Ոչ կոնստանտ մեթոդ
        member_ = val; // Կարող է փոխել տվյալ անդամը
    }

private:
    int member_;
};

void printValue(const MyClass& obj) {
    obj.getValue(); // ՕԿ: կանչվում է կոնստանտ մեթոդ կոնստանտ օբյեկտի համար
    // obj.setValue(20); // ՀԱՏԱՐԱՐՈՒԹՅՈՒՆ: չի կարելի կանչել ոչ կոնստանտ մեթոդ կոնստանտ օբյեկտի համար
}