Sobes.tech
Junior

C++ da override nima?

sobes.tech AI

AIdan javob

Ob'ektni ustun qilish (override) — bu obyektga yo'naltirilgan dasturlashda, asosiy sinfda e'lon qilingan virtual funktsiyaning o'ziga xos amalga oshirilishini ta'minlaydigan mexanizm. Bunday funktsiya asosiy sinfga ko'rsatkich yoki havola orqali chaqirilganda, haqiqiy ob'ektning (meros olgan yoki asosiy) turiga mos keladigan amalga oshirish bajariladi, bu funktsiya ustun qilingan yoki qilinmaganligiga bog'liq.

Asosiy nuqtalar:

  • Faqat virtual funktsiyalarga taalluqlidir.
  • Meros olgan sinfda ustun qilinayotgan funktsiyaning imzosi (ism, qaytish turi, parametrlarning turlari va soni) asosiy sinfdagi ustun qilinayotgan funktsiya bilan to'g'ri mos kelishi kerak.
  • override kalit so'zi (C++11 dan boshlab) funktsiyani aniq ustun qilish niyatini ko'rsatish uchun ishlatiladi. Kompilyator, asosiy sinfdagi funktsiya haqiqatan ham bu imzoda mavjudligini tekshiradi va agar mavjud bo'lmasa, xato beradi. Bu yozilishdagi xatolarni oldini oladi va kodni o'qishni osonlashtiradi.

Misol:

class Base {
public:
    virtual void print() {
        // Asosiy sinfning amalga oshirilishi
        // ...
    }

    virtual void display(int x) const {
        // Yana bir virtual funktsiya
        // ...
    }
};

class Derived : public Base {
public:
    // Base'dan print funktsiyasini ustun qilish
    void print() override {
        // Derived uchun maxsus amalga oshirish
        // ...
    }

    // Bu ustun qilish emas, chunki const yo'q
    /*
    void display(int x) {
        // override bilan kompilatsiya xatosi
        // ...
    }
    */

    // To'g'ri ustun qilish
    void display(int x) const override {
        // Derived uchun maxsus amalga oshirish
        // ...
    }
};