Sobes.tech
Junior

C++ da metodlarning ortiqcha yuklanishi va qayta yozilishi nima?

sobes.tech AI

AIdan javob

Method Overloading (Method Overloading):

  • Bir sinfda 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 Bir xil Bir xil
Signatura metod Farq qiladi Bir xil
Tanlov mexanizmi 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