Dziedziczenie 237
43: void ProsOJedzenie() { cout « "Prośba o jedzenie...\n"; )
44:
45: private:
46: RASA jegoRasa;
47: } ;
48:
49: int main()
50: {
51: Pies fido;
52: fido.Mow();
53: fido.MachajOgonem();
54: cout « "Fido ma " « fido.PobierzWiek() « " lata\n";
55: return 0;
56: }
EFEKT DZIAŁANIA:
Odgłos ssaka! Machanie ogonem. .. Fido ma 2 lata
W liniach 6-27 deklarujemy klasę Ssak (w celu skrócenia programu wszystkie funkcje są zadeklarowane i zdefiniowane jako inline). W liniach 29-47 deklarujemy klasę Pies jako pochodną klasy Ssak. Dzięki takiej deklaracji, każdy pies, oprócz własnej rasy, ma również określoną wagę i wiek.
W linii 51 deklarujemy obiekt klasy Pies o nazwie (imieniu) Fido. Fido, oprócz atrybutów klasy Pies, dziedziczy również wszystkie atrybuty klasy Ssak. Dlatego Fido posiada metodę MachajOgonem (), Mow () i Spij ().
Obiekty klasy Pies są również obiektami klasy Ssak. Jest to główna cecha relacji Jest...”. Kiedy tworzymy obiekt Fido najpierw jest wywoływany jego konstruktor bazowy, którego zadaniem jest stworzenie obiektu klasy Ssak. Następnie jest wywoływany konstruktor klasy Pies, tworzący gotowy obiekt. Ponieważ, przy deklaracji Fido, nie podaliśmy żadnych parametrów, to wywoływany jest domyślny konstruktor klasy Pies. Obiekt Fido jest w pełni stworzony dopiero wtedy, gdy zostaną wykonane oba konstruktory: jeden z klasy Ssak i drugi z klasy Pies.
Podczas usuwania obiektu Fido z pamięci zachodzi proces odwrotny. Najpierw jest wywoływany destruktor klasy Pies, a następnie destruktor klasy Ssak. Każdy destruktor kasuje tę część obiektu Fido, która należy do jego klasy. Pamiętaj, aby posprzątać po Piesku!. Demonstruje to listing 16.3.
W liniach 6-27 deklarujemy klasę Ssak (w celu skrócenia programu wszystkie funkcje są zadeklarowane i zdefiniowane jako inline). W liniach 29-47 deklarujemy klasę Pies jako pochodną klasy Ssak.
43
44
45
46
void ProsOJodzenie() { cout « "Prośba o jedzenie.,.\n";
private:
47: } ;
RASA jegoRasa;
48
49
50: {
int main()
Pie3 fido;
fido.MowO ;
fido.MachajOgonem();
cout « "Fido ma " « fido.PobierzWiek() « " lata\n"; return 0;
51
52
53
54
55
56: )
Odgłos ssaka! Machanie ogonem... Fido ma 2 lata
Dzięki takiej deklaracji, każdy pies, oprócz własnej rasy, ma również określoną wagę i wiek.
W linii 51 deklarujemy obiekt klasy Pies o nazwie (imieniu) Fido. Fido, oprócz atrybutów klasy Pies, dziedziczy również wszystkie atrybuty klasy Ssak. Dlatego Fido posiada metodę MachajOgonem(), Mow () i Spij ().
Obiekty klasy Pies są również obiektami klasy Ssak. Jest to główna cecha relacji Jest...". Kiedy tworzymy obiekt Fido najpierw jest wywoływany jego konstruktor bazowy, którego zadaniem jest stworzenie obiektu klasy Ssak. Następnie jest wywoływany konstruktor klasy Pies, tworzący gotowy obiekt. Ponieważ, przy deklaracji Fido, nie podaliśmy żadnych parametrów, to wywoływany jest domyślny konstruktor klasy Pies. Obiekt Fido jest w pełni stworzony dopiero wtedy, gdy zostaną wykonane oba konstruktory: jeden z klasy Ssak i drugi z klasy Pies.
Podczas usuwania obiektu Fido z pamięci zachodzi proces odwrotny. Najpierw jest wywoływany destruktor klasy Pies, a następnie destruktor klasy Ssak. Każdy destruktor kasuje tę część obiektu Fido, która należy do jego klasy. Pamiętaj, aby posprzątać po Piesku!. Demonstruje to listing 16.3.