Sobes.tech
Junior

C++'та ыкмылдардын ашыкча жүктөлүшү жана кайра аныктоо эмне?

sobes.tech AI

AIден жооп

Мethod 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ден баштап) каталардан сактайт
        // Өзгөчө ишке ашыруу
    }
};

Негизги айырмачылыктар:

Өзгөчөлүк Метод жүктөө Методду кайра иштетүү
Колдонуу жери Бир класс ичинде Базалык жана мурас алган классларда
Метод аты Бирдей Бирдей
Имзо Ар түрдүү Бирдей
Тандоо механизми Статикалык байланыш (компиляция) Динамик байланыш (жүрүшүндө)
Колдонуу Жөнөкөй функциялар Виртуалдуу функциялар
Максат Түрдүү типтер үчүн ар түрдүү аракеттер Мурас алгандан кийин өзгөчө ишке ашыруу