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ден баштап) каталардан сактайт
// Өзгөчө ишке ашыруу
}
};
Негизги айырмачылыктар:
| Өзгөчөлүк | Метод жүктөө | Методду кайра иштетүү |
|---|---|---|
| Колдонуу жери | Бир класс ичинде | Базалык жана мурас алган классларда |
| Метод аты | Бирдей | Бирдей |
| Имзо | Ар түрдүү | Бирдей |
| Тандоо механизми | Статикалык байланыш (компиляция) | Динамик байланыш (жүрүшүндө) |
| Колдонуу | Жөнөкөй функциялар | Виртуалдуу функциялар |
| Максат | Түрдүү типтер үчүн ар түрдүү аракеттер | Мурас алгандан кийин өзгөчө ишке ашыруу |