C++/Funkcje wirtualne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
PG (dyskusja | edycje)
PG (dyskusja | edycje)
→‎Wstęp: doprecyzowanie
Linia 2:
Funkcje wirtualne to specjalne funkcje składowe, które przydają się szczególnie, gdy używamy obiektów posługując się wskaźnikami lub referencjami do nich. Dla zwykłych funkcji z identycznymi nazwami to, czy zostanie wywołana funkcja z klasy podstawowej, czy pochodnej, zależy od typu wskaźnika, a nie tego, na co faktycznie on wskazuje. Dysponując funkcjami wirtualnymi będziemy mogli użyć prawdziwego '''polimorfizmu''' – używać metod klasy pochodnej wszędzie tam, gdzie spodziewana jest klasa podstawowa. W ten sposób będziemy mogli korzystać z metod klasy pochodnej korzystając ze wskaźnika, którego typ odnosi się do klasy podstawowej.
 
Chyba największą zaletą polimorfizmu jest to, że stanowi on „lepszą wersję” instrukcji warunkowych. Lepszą, bo wszelkie decyzje zależne od typu obiektu podejmowane są przez programistę tylko jeden raz: podczas tworzenia obiektu. W klasycznym podejściu, znanym z języka C, typ obiektu przechowuje się np. jako typ wyliczeniowy. Jest to proste i szybkie, ale zarazem kłopotliwe, bo przy każdej operacji zależnej od typu programista musi wstawić np. nowy blok 'if' lub 'case'. Gdy zachodzi potrzeba zmodyfikowania programu, np. dodania nowego typu obiektu, trzeba też znaleźć wszystkie miejsca, gdzie wstawiony był jakiś 'if', sprawdzający typ obiektu! Przy odpowiednio dużym programie wprowadzenie modyfikacji staje się w ten sposób bardzo trudne. Korzystając z polimorfizmu, programista tworzy po prostu obiekt odpowiedniej klasy, a wszystkie późniejsze decyzje, do której konkretnie funkcji skoczyć, podejmowane są już automatycznie, na podstawie informacji dostarczonych przez kompilator. Dzięki temu programista unika wielu możliwości popełnienia błędu, a dodanie nowego typu obiektu sprowadza się do napisania nowej klasy – nie trzeba już przekopywać się przez cały kod.
 
==Opis==