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!!!