Junior
Czym jest polimorfizm w kontekście języków programowania C/C++?
sobes.tech AI
Odpowiedź od AI
Polimorfizm to właściwość obiektów polegająca na posiadaniu wielu form lub reprezentowaniu kilku typów w hierarchii dziedziczenia. Umożliwia pracę z obiektami różnych klas za pomocą wspólnego interfejsu klasy bazowej.
W C++ polimorfizm realizowany jest na dwa główne sposoby:
-
Polimorfizm czasu kompilacji (statyczny, ad-hoc):
- Implementowany za pomocą przeciążania funkcji i operatorów.
- Wybór konkretnej funkcji lub operatora odbywa się na etapie kompilacji.
// Przykład przeciążania funkcji void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Polimorfizm czasu wykonania (dynamiczny, podtypowy):
- Implementowany za pomocą funkcji wirtualnych i wskaźników/odwołań do klasy bazowej.
- Wybór konkretnej funkcji, która zostanie wywołana, odbywa się w czasie wykonywania programu.
- Wymaga, aby w klasie bazowej była co najmniej jedna funkcja wirtualna.
- Używa tabeli funkcji wirtualnych (vtable).
// Przykład polimorfizmu dynamicznego class Base { public: virtual void show() { /* Implementacja w klasie bazowej */ } }; class Derived : public Base { public: void show() override { /* Nadpisana implementacja */ } }; // Użycie Base* ptr = new Derived(); ptr->show(); // Wywołuje Derived::show()
Polimorfizm pozwala pisać bardziej elastyczny i rozszerzalny kod, ponieważ nowe klasy mogą być dodawane bez zmiany istniejącego kodu pracującego z klasą bazową.