Sobes.tech
Junior

C++-də metodların yüklənməsi və yenidən təyin edilməsi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Method Overloading (Method Overloading):

  • Bir sinifda bir xil nom bilan bir nechta metodlarga ega bo'lish imkonini beradi.
  • Ular signatura (parametrlar soni va/tiplar) bo'yicha farq qiladi.
  • Qaytarish turi overloading uchun signatura ta'rifida qatnashmaydi.
  • Aniq metod tanlovi, chaqiruvda argumentlarning tiplari asosida kompilator tomonidan belgilanadi (statik bog'lanish).
class MyClass {
public:
    void print(int a) {
        // Butun sonni chiqarish
    }

    void print(double d) {
        // Oqimli sonni chiqarish
    }

    void print(int a, int b) {
        // Ikki butun sonni chiqarish
    }
};

Metodlarni qayta yozish (Method Overriding):

  • Meros olgan sinf, asosiy sinfda belgilangan metodning maxsus implementatsiyasini taqdim etishi mumkin.
  • Meros olgan sinfdagi metod xuddi shunday signatura (nom, parametrlar soni va tiplari) va ayni vaqtda qaytarish turi (kovariant qaytarish turi) bo'lishi kerak.
  • Bu virtual funksiyalar (virtual) bilan ishlatiladi va polimorfizmni amalga oshirish uchun.
  • Aniq metod implementatsiyasi, ish vaqtida (dinamik bog'lanish) aniqlanadi va ob'ektning haqiqiy turiga bog'liq.
class Base {
public:
    virtual void display() {
        // Asosiy sinfdagi implementatsiya
    }
};

class Derived : public Base {
public:
    void display() override { // override kalit so'zi (C++11 dan boshlab) xatolarni oldini oladi
        // Maxsus implementatsiya meros olgan sinfda
    }
};

Asosiy farqlar:

Xususiyat Method Overloading Method Overriding
Qo'llash joyi Bir sinf ichida Asosiy va meros sinflarda
Method nomi Taka shunday Taka shunday
Signatura metod Farq qiladi Taka shunday
Mekanizm tanlovi Statik bog'lanish (kompilatsiya) Dinamik bog'lanish (ishga tushirish)
Ishlatiladi bilan Oddiy funksiyalar Virtual funksiyalar
Maqsad Turli tiplarga turli harakatlar qilish Meros olgan sinfda maxsus implementatsiya