inf‎ > ‎

Lab12 - polimorfizm

1. Zdefiniuj klasę Fig{} z konstruktorem i destruktorem. Niech klasa zawiera pola x, y oraz metodę void paint(). Na razie wystarczy, że metoda ta wyświetli komunikat "Fig::paint()".
2. Zdefiniuj klasę Rect{} będącą pochodną klasy Fig{}. Przesłoń metodę paint() tak, aby wyświetlał się napis "Rect::paint()".
3. Utwórz dynamicznie obiekty obu klas stosując różne kombinacje typu wskaźnika oraz konstruktora, np.:
Fig *f = new Fig();
Fig *f = new Rect(); 
Rect *f = new Rect();

Za każdym razem wywołaj metodę paint() utworzonego obiektu f: 
f->paint();
Co zostanie wyświetlone? Które kombinacje są dozwolone?
Pamiętaj o usunięciu obiektu po jego użyciu, aby zwolnić zajmowaną pamięć.
4. Jak zmieni się działanie kodu w punkcie (3), gdy metoda będzie zadeklarowana jako virtual void paint()?