Sobes.tech
Junior

Ի՞նչ է պոլիմորֆիզմը ծրագրավորման լեզուների C/C++ համատեքստում։

sobes.tech AI

Պատասխան AI-ից

Պոլիմորֆիզմը՝ դա օբյեկտների հատկությունն է, որը թույլ է տալիս ունենալ մի քանի ձևեր կամ ներկայացնել մի քանի տիպեր ժառանգության հիերարխիայում։ Դա թույլ է տալիս աշխատել տարբեր դասերի օբյեկտների հետ՝ ընդհանուր բազային դասի ինտերֆեյսի միջոցով։

C++-ում պոլիմորֆիզմը իրականացնում են երկու հիմնական եղանակով՝

  1. Կոմպիլյացիայի ժամանակի պոլիմորֆիզմ (ստատիկ, ad-hoc պոլիմորֆիզմ):

    • Իրականացնում է ֆունկցիաների և օպերատորների վերաշարադրումը։
    • Կատարվում է կոնկրետ ֆունկցիայի կամ օպերատորի ընտրությունը՝ կոմպիլյացիայի ժամանակ։
    // Ֆունկցիայի վերաշարադրության օրինակ
    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()
    

Պոլիմորֆիզմը թույլ է տալիս գրել ավելի ճկուն և ընդարձակելի կոդ, քանի որ նոր դասեր կարող են ավելացվել՝ առանց առկա կոդը փոխելու, որը աշխատում է բազային դասի հետ։