Dziedziczenie 239
60:
61: Pies::Pies () :
62: jegoRasa(YORKIE)
63: {
64: cout « "Konstruktor Psa...\n”;
65: }
66:
67: Pies::-Pies ()
68: {
69: cout « "Destruktor Psa...\n";
70: }
71: int roain()
72: {
73: Pies fido;
74: fido.Mow();
75: fido.MachajOgonem();
76: cout « "Fido ma " « fido.GetWiek() « " lata\n";
77: return 0;
78: )
EFEKT DZIAŁANIA:
Konstruktor Ssaka... Konstruktor Psa... Odgłos Ssaka! Machanie ogonem... Fido ma 2 lata Destruktor Psa... Destruktor Ssaka...
Listing 16.3. jest bardzo podobny do listingu 16.2, jednak teraz,
konstruktory i destruktory wypisują informację pozwalającą określić kiedy zostają wywołane. Najpierw jest wywoływany konstruktor klasy Ssak, a następnie konstruktor klasy Pies. Dopiero w tym momencie obiekt Pies jest całkowicie stworzony i można odwoływać się do jego metod. Kiedy Fido jest usuwany z pamięci, najpierw jest wywoływany destruktor klasy Pies, a następnie destruktor klasy Ssak.
Istnieje możliwość przeciążenia konstruktora klasy Ssak tak, aby pobierał on konkretny wiek. Podobnie można przeciążyć konstruktor klasy Pies, tak aby pozwalał on na proste określenie rasy. Jak odczytać wartość parametru przekazanego do konstruktora w klasie Ssak? Co się stanie, gdy klasa Pies pozwala na inicjalizację wieku, natomiast klasa Ssak nie?
Inicjalizacja klasy bazowej może być przeprowadzona podczas inicjalizacji klasy poprzez napisanie nazwy klasy bazowej i podanie w nawiasach parametrów wymaganych przez klasę bazową. Ilustruje to listing 16.4.
60:
61: Pies: : Pies () :
62: jegoRasa(YORKIE)
63: (
64: cout « "Konstruktor Psa...\n";
65: >
66:
67: Pies: :~Pies ()
68: {
69: cout « "Destruktor Psa...\n";
70: )
71: int main()
72: {
73: Pies fido;
74: fido.Mow();
75: fido.MachajOgonem();
76: cout « "Fido ma " « fido.GetWiek() « " lata\n";
77: return 0 ;
78: )
Konstruktor Ssaka... Konstruktor Psa... Odgłos Ssaka! Machanie ogonem... Fido ma 2 lata Destruktor Psa... Destruktor Ssaka...
Listing 16.3. jest bardzo podobny do listingu 16.2, jednak teraz, konstruktory i destruktory wypisują informację pozwalającą określić kiedy zostają wywołane. Najpierw jest wywoływany konstruktor klasy Ssak, a następnie konstruktor klasy Pies. Dopiero w tym momencie obiekt Pies jest całkowicie stworzony i można odwoływać się do jego metod. Kiedy Fido jest usuwany z pamięci, najpierw jest wywoływany destruktor klasy Pies, a następnie destruktor klasy Ssak.
istnieje możliwość przeciążenia konstruktora klasy Ssak tak, aby pobierał on konkretny wiek. Podobnie można przeciążyć konstruktor klasy Pies, tak aby pozwalał on na proste określenie rasy. Jak odczytać wartość parametru przekazanego do konstruktora w klasie Ssak? Co się stanie, gdy klasa Pies pozwala na inicjalizację wieku, natomiast klasa Ssak nie?
Inicjalizacja klasy bazowej może być przeprowadzona podczas inicjalizacji klasy poprzez napisanie nazwy klasy bazowej i podanie w nawiasach parametrów wymaganych przez klasę bazową. Ilustruje to listing 16.4.