Co zostanie wyświetlone po wykonaniu przedstawionego kodu zapisanego w języku C++?
Co zostanie wyświetlone po wykonaniu przedstawionego kodu zapisanego w języku C++?
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: A
Uzasadnienie i szersze wyjaśnienie:
Ten kod jest klasycznym przykładem działania polimorfizmu w C++ dzięki użyciu słowa kluczowego virtual.
virtual void metoda()wKlasaBazowadeklaruje metodę jako wirtualną. Oznacza to, że decyzja o tym, która wersja metody (KlasaBazowa::metodaczyKlasaPochodna::metoda) zostanie wywołana, będzie podejmowana w czasie wykonania programu, na podstawie rzeczywistego typu obiektu, a nie typu wskaźnika.W funkcji
main:KlasaBazowa *bazowa = new KlasaPochodna();– Wskaźnikbazowajest typuKlasaBazowa*, ale wskazuje na obiekt, który faktycznie jest typuKlasaPochodna.KlasaPochodna *pochodna = new KlasaPochodna();– Wskaźnikpochodnajest typuKlasaPochodna*i wskazuje na obiekt typuKlasaPochodna.
Wywołania metod:
bazowa->metoda();– Ponieważmetoda()jest wirtualna, kompilator sprawdzi rzeczywisty typ obiektu, na który wskazujebazowa. Jest toKlasaPochodna, więc zostanie wywołana przesłonięta wersja metody z klasyKlasaPochodna. Wyświetli się „Pochodna.”.pochodna->metoda();– Tutaj zarówno typ wskaźnika, jak i typ obiektu toKlasaPochodna, więc bez wątpliwości zostanie wywołana metoda z tej klasy. Wyświetli się „Pochodna.”.
Ostatecznie w konsoli zobaczymy: Pochodna. Pochodna.
Gdyby metoda metoda() w KlasaBazowa nie była wirtualna, wywołanie bazowa->metoda() uruchomiłoby wersję z KlasaBazowa (zgodnie z typem wskaźnika), a wynik byłby „Bazowa. Pochodna.”.
Chcesz poćwiczyć całą kwalifikację INF.04?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Język programowania C++Wieloparadygmatowy, kompilowany bezpośrednio do kodu maszynowego język programowania ogólnego przeznaczenia, oferujący bezpośrednie zarządzanie pamięcią i najwyższą wydajność.
- Polimorfizm (Wielopostaciowość w OOP)Cecha programowania obiektowego pozwalająca na jednakowe traktowanie obiektów różnych klas pochodnych za pośrednictwem wspólnego interfejsu lub klasy bazowej z różną implementacją zachowań.
- Polimorfizm (Polymorphism)Zdolność obiektów różnych klas powiązanych hierarchią dziedziczenia do reagowania na to samo wywołanie metody w specyficzny dla siebie sposób.
Podobne pytania z działu „Jezyk cpp skladnia i pamiec”
Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 25 pytań z tego działu.
- #183
Którą wartość zwróci funkcja zapisana językiem C++, jeżeli jej parametr wejściowym jest tablica utworzona w następujący sposób: int tablica[] = {3,4,2,4,10,0};?
- #193
Wywołanie funkcji zamien napisanej w języku C++ może wyglądać następująco
- #194
W programie napisanym w języku C++ należy utworzyć zmienną, która przechowa liczbę rzeczywistą. Określ typ tej zmiennej
- #196
Co stanie się po wykonaniu przedstawionego fragmentu kodu napisanego w języku C++?
- #203
W wyniku wykonania przedstawionego kodu napisanego w języku C++ w konsoli zostanie wyświetlony ciąg liczb