236
Dlatego, funkcja Pies:: Machaj Ogonem () ma dostęp do zmiennej jegoRasa (zadeklarowanej jako private) i do wszystkich zmiennych klasy Ssak zadeklarowanych jak protected.
Nawet jeśli w hierarchii umieścilibyśmy inne klasy pomiędzy Ssak i Pies (np. klasa ZwierzeDomowe) to klasa Pies i tak miałaby dostęp do wszystkich elementów klasy Ssak zadeklarowanych jako protected (oczywiście, przy założeniu, że te dodatkowe klasy wykorzystują dziedziczenie publiczne).
Listing 16.2 pokazuje jak stworzyć obiekt klasy Pies i jak wykorzystywać jego zmienne i funkcje wewnętrzne.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10
11
12
13
14
15
16
17
18
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//Listing 16.2 Wykorzystanie obiektów pochodnych #include <iostream.h>
enum RASA { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };
class Ssak
{
public:
// Konstruktory
Ssak() :jegoWiek(2) , jegoWaga(5) {}
-Ssak() {}
// funkcje dostępu
int PobierzWiek()const { return jegoWiek; } void UstawWiek(int wiek) { jegoWiek = wiek; } int PobierzWaga() const { return jegoWaga; ) void UstawWaga(int waga) { jegoWaga = waga; )
// Inne metody
void Mow()const ( cout « "Odgłos Ssaka!\n"; }
void Spij()const ( cout « "Cicho. Ja teraz spie.\n"; }
protected;
int jegoWiek; int jegoWaga;
class Pies : public Ssak
i
public:
// Konstruktory
Pies() : jegoRasa (YORKIE) {)
-Pies () {}
// Funkcje dostępu
RASA PobierzRasa() const ( return jegoRasa; ) void UstawRasa(RASA rasa) ( jegoRasa = rasa; )
// Inne metody
void MachajOgonem() { cout « "Machanie ogonem...\n"; }
236
Dlatego, funkcja Pies: :MachajOgonem() ma dostęp do zmiennej jegoRasa (zadeklarowanej jako private) i do wszystkich zmiennych klasy Ssak zadeklarowanych jak protected.
Nawet jeśli w hierarchii umieścilibyśmy inne klasy pomiędzy Ssak i Pies (np. klasa ZwierzeDomowe) to klasa Pies i tak miałaby dostęp do wszystkich elementów klasy Ssak zadeklarowanych jako protected (oczywiście, przy założeniu, że te dodatkowe klasy wykorzystują dziedziczenie publiczne).
Listing 16.2 pokazuje jak stworzyć obiekt klasy Pies i jak wykorzystywać jego zmienne i funkcje wewnętrzne.
1: //Listing 16.2 Wykorzystanie obiektów pochodnych
3: ffinclude <iostream.h>
4: enum RASA { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };
5:
6: class Ssak
7: i
8: public:
9: // Konstruktory
10: Ssak():jegoWiek(2), jegoWaga(5)()
11: -Ssak () {]
12:
13: // funkcje dostępu
14: int PobierzWiek()const { return jegoWiek; )
15: void UstawWiek(int wiek) { jegoWiek = wiek; )
16: int PobierzWaga() const ( return jegoWaga; )
17: void UstawWaga(int waga) ( jegoWaga = waga; )
18:
19: // Inne metody
20: void Mow()const { cout « "Odgłos Ssaka!\n”; )
21: void Spij()const { cout « "Cicho. Ja teraz spie.\n"; )
23:
24: protected:
25: int jegoWiek;
26: int jegoWaga;
27: >;
28:
29: class Pies : public Ssak
30: (
31: public:
32:
33: // Konstruktory
34: Pies () : jegoRasa (YORKIE) {)
35: -Pies () ()
36:
37: // Funkcje dostępu
38: RASA PobierzRasa() const { return jegoRasa; )
39: void UstawRasa(RASA rasa) ( jegoRasa = rasa; }
40:
41: // Inne metody
42: void MachajOgonemO { cout « "Machanie ogonem. ..\n"; )