Sobes.tech
Junior

C++'та override деген эмне?

sobes.tech AI

AIден жооп

Об'ектке багытталган программалоодо, override — бул негизги класста жарыяланган виртуалдык функциянын өзгөчө ишке ашырылышын камсыздоочу механизм. Мындай функция негизги класска көрсөткүч же шилтеме аркылуу чакырылганда, чындыктагы объекттин (мурас алган же негизги) түрүнө ылайык ишке ашырылышы аткарылат, бул функциянын override кылынган же кылынбаганына көз каранды.

Негизги пункттар:

  • Бул гана виртуалдык функцияларга тиешелүү.
  • Мурас алган класста override кылынган функциянын (аты, кайтаруу тиби, параметрлердин тиби жана саны) подписи негизги класстагы override кылынган функциянын подписи менен так туура келиши керек.
  • override ачкыч сөзү (C++11ден баштап) функцияны так override кылууну каалаганын көрсөтүү үчүн колдонулат. Компилятор, негизги класста бул подписте функция чын эле бар экенин текшерет жана эгер жок болсо, катаны чыгарат. Бул жазуудагы катачылыктарды алдын алууга жардам берет жана кодду окууга жеңилдетет.

Мисал:

class Base {
public:
    virtual void print() {
        // Негизги класстын ишке ашырылышы
        // ...
    }

    virtual void display(int x) const {
        // Башка виртуалдык функция
        // ...
    }
};

class Derived : public Base {
public:
    // Base'дан print функциясын override кылуу
    void print() override {
        // Derived үчүн өзгөчө ишке ашырылыш
        // ...
    }

    // Бул override эмес, анткени const жок
    /*
    void display(int x) {
        // override менен компиляция катасы
        // ...
    }
    */

    // Туура override
    void display(int x) const override {
        // Derived үчүн өзгөчө ишке ашырылыш
        // ...
    }
};