Sobes.tech
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:

  1. Xavfsizlik: Tasodifiy holat o'zgarishlarini oldini oladi.
  2. Constant ob'ektlar bilan foydalanish: const bilan e'lon qilingan constant ob'ektlar faqat constant metodlarni chaqira oladi. Non-constant metodlar ularga kirish imkoniga ega emas.
  3. 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.