Sobes.tech
Junior

C/C++ программалоо тилдеринде полиморфизм деген эмне?

sobes.tech AI

AIден жооп

Полиморфизм — бул объекттердин көп формага ээ болушу же мурасчылык иерархиясында бир нече түрдү көрсөтүү касиети. Бул негизги классдын жалпы интерфейси аркылуу ар кандай класстардын объекттери менен иштөө мүмкүнчүлүгүн берет.

C++та полиморфизм эки негизги жол менен ишке ашырылат:

  1. Жыйнак убактысында полиморфизм (статикалык, ад-хок полиморфизм):

    • Функциялар жана операторлордун жүктөлүшү аркылуу ишке ашырылат.
    • Конкреттүү функция же оператор тандоо жыйнак убактысында болот.
    // Функцияларды жүктөө мисалы
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Ишке ашыруу убактысында динамикалык полиморфизм (подтип полиморфизм):

    • Виртуалдык функциялар жана көрсөткүчтөр/байланыштар аркылуу ишке ашырылат.
    • Конкреттүү функцияны чакыруу ишке ашыруу убактысында болот.
    • Базалык класста кеминде бир виртуалдык функция болушу керек.
    • Виртуалдык функциялар таблицасын (vtable) колдонуу.
    // Динамикалык полиморфизм мисалы
    class Base {
    public:
        virtual void show() { /* Базалык класста ишке ашыруу */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Өткөрүлгөн ишке ашыруу */ }
    };
    
    // Колдонуу
    Base* ptr = new Derived();
    ptr->show(); // Derived::show() чакырылат
    

Полиморфизм кодду көбүрөөк ийкемдүү жана кеңейтүүчү кылууга мүмкүндүк берет, анткени жаңы класстар кошулушу мүмкүн, ал эми иштеп жаткан код өзгөртүлбөйт, негизги класс менен иштеген.