Junior
Konstant va konstant bo'lmagan metodlar haqida nima bilasiz?
sobes.tech AI
AIdan javob
C++ da konstant metodlar (const methods) sinf klasiya metodlaridir, ular parametrlar ro'yxatidan so'ng const kalit so'zi bilan e'lon qilinadi.
class MyClass {
public:
void nonConstMethod(); // Non-constant metod
void constMethod() const; // Constant metod
};
Parametrlar ro'yxatidan so'ng const kalit so'zi metodning chaqirilgan ob'ekt holatini o'zgartirmasligini kafolatlaydi. Bu shuni anglatadiki, constant metod ichida:
- Ob'ektning statik bo'lmagan ma'lumot a'zolari o'zgartirilmaydi.
- Faqat shuningdek ob'ektning constant metodlari chaqirilishi mumkin.
Constant metodlarning maqsadi:
- Xavfsizlik: Tasodifiy holat o'zgarishlarini oldini oladi.
- Constant ob'ektlar bilan foydalanish:
constbilan e'lon qilingan constant ob'ektlar faqat constant metodlarni chaqira oladi. Non-constant metodlar ularga kirish imkoniga ega emas. - Yuklamalar: Metodlar constantlik bo'yicha yuklanishi mumkin. Bu, bir xil nom va parametr imzosi bilan ikkita metodga ega bo'lish imkonini beradi, biri constant va biri non-constant. Kompilyator chaqirilayotgan ob'ektning constant yoki non-constant ekanligiga qarab mos versiyasini tanlaydi.
class MyClass {
int value;
public:
int getValue() const { // Constant versiya
return value;
}
int getValue() { // Non-constant versiya
return value++; // Holatni o'zgartirish imkoniyati
}
};
void test(const MyClass& objConst, MyClass& objNonConst) {
objConst.getValue(); // const versiya chaqiriladi
objNonConst.getValue(); // non-const versiya chaqiriladi
}
Non-constant metodlar:
Bu oddiy sinf metodlari bo'lib, ular ob'ekt holatini o'zgartirishi mumkin. Ular parametrlar ro'yxatidan so'ng const kalit so'zi bilan e'lon qilinmaydi.
Foydalanish:
| Ob'ekt turi | Metod chaqiruvi | Qaysi metod chaqiriladi | Izoh |
|---|---|---|---|
const T |
obj.method() |
Faqat constant metod | Constant ob'ekt holatini o'zgartib bo'lmaydi. |
T |
obj.method() |
Non-constant metod | Ob'ekt holatini o'zgartirish mumkin. |
T |
obj.method() const |
Constant metod | Agar ikkala versiya mavjud bo'lsa va non-constant ob'ektda chaqirilsa, prioritet non-constant versiyaga beriladi. Ammo, objectni aniq cast qilish mumkin, agar constant versiyasini chaqirish kerak bo'lsa (kamdan-kam). |
Constantlikdan foydalanish yaxshi amaliyotdir, chunki u kodning o'qilishi va xavfsizligini oshiradi, shuningdek, kompilyatorga qo'shimcha optimallashtirishlarni amalga oshirish imkonini beradi.