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); // ՀԱՏԱՐԱՐՈՒԹՅՈՒՆ: չի կարելի կանչել ոչ կոնստանտ մեթոդ կոնստանտ օբյեկտի համար
}