Zdefiniować klasę Wino zawierającą

Transkrypt

Zdefiniować klasę Wino zawierającą
Zdefiniować klasę Wino zawierającą:
a) pola prywatne:
- marka typu char*,
- styl typu tablica 20 znaków,
- butelki typu całkowitego.
b) publiczne metody i funkcje zaprzyjaźnione:
- konstruktor trójargumentowy const char *marka, const char *styl i int butelki z
wartościami domyślnymi odpowiednio: „brak”, „brak”, 0.
- konstruktor kopiujący
- destruktor
- operator =
- operator + = z argumentem całkowitym, zwiększający ilość butelek
- operator - = z argumentem całkowitym, zmniejszający ilość butelek (o ile można
odejmować w przeciwnym przypadku, zeruje pole butelki.)
- metodę IleButelek zwracającą wartość pola butelki.
- metodę Pokaz wypisującą informacje w formacie:
 Marka: Marlot
 Styl:
czerwone
 Butelki: 20
- operator << w formacie (bez znaku przejścia do nowej linii):
Marlot, czerwone, 20
Zdefiniować klasę potomną StareWino, dziedziczącą publicznie po macierzystej klasie Wino,
zawierającą:
a) prywatne pola:
- nazwa typu wskaźnik do znaku,
- rok typu całkowitego.
b) publiczne metody i funkcje zaprzyjaźnione:
- konstruktor bezargumentowy
- konstruktor o argumentach: const char *marka, const char styl, int butelki, const
char *nazwa, int rok.
- konstruktor kopiujący
- destruktor
- operator =
- metodę Pokaz wypisującą informacje w formacie:
 Marka: Marlot
 Styl:
czerwone
 Butelki: 20
 Nazwa: Old Velvet
 Rok:
1899
- operator <<
 Marlot, czerwone, 20, Old Velvet, 1899
1. Określ, w obydwu klasach metody stałe.
2. Określ, w obydwu klasach metody wirtualne.
3. Zadeklaruj tablicę 5 wskaźników do obiektów takiego typu, by móc przechowywać
obiekty zarówno typu Wino jak i StareWino.
4. Wywołaj wszystkie metody na rzecz obiektów.
5. Zadeklaruj obiekt stały i wywołaj na jego rzecz możliwe metody.
Pamiętaj o zwolnieniu przydzielonej pamięci!!!