Sobes.tech
Junior

Чӣ тавр боргирӣ ва иваз кардани усулҳо дар C++?

sobes.tech AI

Ҷавоб аз AI

Методларнинг юкламаси (Method Overloading):

  • Бир класс ичида бир неча методни бир хил исм билан мавжуд қилиш имконини беради.
  • Улар имзо (параметрлар сони ва/ёки турлари) бўйича фарқ қилади.
  • Қайтарилган тур юкламани аниқлашда иштирок этмайди.
  • Аниқ методни компилятор аргументлар турига асосан танлайди (статик боғланиш).
class MyClass {
public:
    void print(int a) {
        // бутун сонни чоп этиш
    }

    void print(double d) {
        // ўтказма рақамни чоп этиш
    }

    void print(int a, int b) {
        // икки бутун сонни чоп этиш
    }
};

Методларнинг юкламаси (Method Overloading):

  • Наследчи класс базавий классда белгиланган методнинг махсус амалга оширилишини таъминлай олади.
  • Наследчи классдаги метод бир хил имзо (исм, параметрлар сони ва турлари) ва шунингдек қайтарилган турга эга бўлиши керак (ёки ковариант қайтарилган тур).
  • Виртуал функциялар (virtual) билан бирга полиморфизмни амалга ошириш учун қўлланади.
  • Аниқ амалга оширилиш танланиши иш вақтида (динамик боғланиш), объектнинг ҳақиқий турига қараб белгиланади.
class Base {
public:
    virtual void display() {
        // асосий классда амалга ошириш
    }
};

class Derived : public Base {
public:
    void display() override { // override калит сўзи (C++11 дан бошлаб) хато қўлланишлардан сақлайди
        // махсус амалга ошириш
    }
};

Асосий фарқлар:

Хусусият Методларнинг юкламаси Методларнинг қайта ишланиши
Қўлланиш жойи Бир класс ичида Базавий ва наследий классларда
Метод исми Бир хил Бир хил
Имзо Турлича Бир хил
Танлов механизми Статик боғланиш (компиляция) Динамик боғланиш (иш вақтида)
Қўлланилади Оддий функциялар Виртуал функциялар
Мақсад Турли турлар учун турли амаллар Наследчида махсус амалга ошириш