Junior
Какво е полиморфизъм в контекста на езиците за програмиране C/C++?
sobes.tech AI
Отговор от AI
Полиморфизмът е свойство на обектите да имат множество форми или да представят няколко типа в йерархията на наследяването. Позволява работа с обекти от различни класове чрез общ интерфейс на базовия клас.
В C++ полиморфизмът се реализира по два основни начина:
-
Полиморфизъм при компилация (статичен, ad-hoc полиморфизъм):
- Реализира се чрез презареждане на функции и оператори.
- Изборът на конкретната функция или оператор става по време на компилация.
// Пример за презареждане на функции void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Динамичен, време на изпълнение, полиморфизъм (подтипов полиморфизъм):
- Реализира се чрез виртуални функции и указатели/връзки към базовия клас.
- Изборът на конкретната функция, която ще бъде извикана, става по време на изпълнение.
- Изисква поне една виртуална функция в базовия клас.
- Използва таблицата с виртуални функции (vtable).
// Пример за динамичен полиморфизъм class Base { public: virtual void show() { /* Реализация в базовия клас */ } }; class Derived : public Base { public: void show() override { /* Презаписана реализация */ } }; // Използване Base* ptr = new Derived(); ptr->show(); // Извиква Derived::show()
Полиморфизмът позволява писането на по-гъвкав и разширяем код, тъй като нови класове могат да бъдат добавени без промяна на съществуващия код, работещ с базовия клас.