INF.04 · pytanie 596
Jakie rezultaty pojawią się po uruchomieniu poniższego kodu napisanego w języku C++? class KlasaBazowa { public: virtual void metoda() { cout << "Bazowa. "; } }; class KlasaPochodna : public KlasaBazowa { public: void metoda() { cout << "Pochodna. "; } }; int main() { KlasaBazowa *bazowa = new KlasaPochodna(); KlasaPochodna *pochodna = new KlasaPochodna(); bazowa->metoda(); pochodna->metoda(); return 0; }
- APochodna. Bazowa.
- BPochodna. Pochodna.Poprawna
- CBazowa. Bazowa.
- DBazowa. Pochodna.
Wyjaśnienie
Kod wyświetla 'Pochodna. Pochodna.', co wskazuje, że metody klasy pochodnej przejęły kontrolę nad tymi z klasy bazowej. To fajny przykład polimorfizmu, jaki mamy w C++. Tutaj metoda w klasie pochodnej jest lepsza od metody w klasie bazowej. To, jakie wywołanie się wykona, zależy od konkretnego obiektu, a nie od tego, jaką metodę zdefiniowaliśmy w klasie bazowej.