Dalej•LEKCJA 22 / 24

Polimorfizm

Kurs C++ · Wyjaśnienie, przykłady, oczekiwany wynik i ćwiczenie.

Metody virtual umożliwiają wybór implementacji na podstawie faktycznego typu obiektu.

Cel lekcji

Poznać zagadnienie „Polimorfizm”, zrozumieć przykład i umieć zastosować podobny zapis we własnym programie.

Wyjaśnienie krok po kroku

To szczególnie ważne podczas korzystania ze wskaźników lub referencji do klasy bazowej.

Najpierw przeanalizuj kod bez uruchamiania. Zwróć uwagę, jakie dane wykorzystuje program, co z nimi robi i skąd bierze się wynik pokazany pod przykładem.

Praktyczny przykład

Gdzie zobaczysz efekt: Konsola programu C++

Gdzie wkleić kod? To fragment ćwiczeniowy: instrukcje wykonawcze wstaw do main(), a deklaracje klas lub funkcji umieść w odpowiednim miejscu pliku. Uzupełnij wymagane importy i nagłówki.

struct Animal { virtual const char* say() const { return "..."; } virtual ~Animal() = default; };
struct Dog : Animal { const char* say() const override { return "hau"; } };
// main: Dog d; Animal& a = d; std::cout << a.say();

Przeczytaj kod linijka po linijce

  1. struct Animal { virtual const char* say() const { return "..."; } virtual ~Animal() = default; };Zwracamy wyliczoną wartość do miejsca wywołania funkcji.
  2. struct Dog : Animal { const char* say() const override { return "hau"; } };Zwracamy wyliczoną wartość do miejsca wywołania funkcji.
Oczekiwany wynik / efektpo uruchomieniu przykładu
hau

Jak utrwalić tę umiejętność?

Przepisz kod samodzielnie. Następnie zmień jedną wartość lub jedną instrukcję i spróbuj przewidzieć efekt. Dopiero potem uruchom zmienioną wersję. Jeśli wynik jest inny niż oczekiwany, porównaj kolejne linie.

Spróbuj samodzielnie

Dodaj klasę Cat zwracającą „miau”.

To już koniec tej lekcji.

Jeśli rozumiesz przykład, oznacz lekcję jako ukończoną i przejdź dalej.