Poznaj C++ w$ godziny0258

Poznaj C++ w$ godziny0258



250 Godzina 17


To jest właśnie główna zaleta polimorfizmu C++. Możesz np. stworzyć różne typy okienek - okna dialogowe, paski, okna edycyjne, listy i dać każdemu wirtualną metodę Rysuje;. Następnie poprzez stworzenie wskaźnika do okna i przypisaniu do pól dialogowych i innych typów pochodnych, możesz wywołać metodę Rysuj () bez zastanawiania się, jaki jest typ aktualnie obsługiwanego okna. Właściwa metoda zostanie wywołana bez Twojej ingerencji.


Otrzymany wskaźnik możesz wykorzystać do wywoływania dowolnej metody klasy Ssak. Jedyne co potrzebujesz to możliwość wywoływania odpowiednich metod nadpisanych w klasie Pies. Pozwalają na to metody wirtualne. Ilustruje to listing 17.1. Zwróć uwagę co się dzieje z metodami, które nie są wirtualne.

Listing 17.1. Wykorzystanie metod wirtualnych

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


//Listing 17.1 Wykorzystanie metod wirtualnych

finclude <iostream.h>

class Ssak

1

public:

Ssak():jegoWiek(1) { cout « "Konstruktor Ssaka...\n"; ) ~Ssak() { cout « "Destruktor Ssaka...\n"; } void Ruch() const { cout « "Ssak przeszedł jeden krok\n"; ) virtual void Mow() const { cout « "Odgłos Ssaka!\n"; } protected:

int jegoWiek;

);

class Pies : public Ssak

{

public:

Pies() { cout « "Konstruktor Psa...\n"; )

~PiesO { cout « "Destruktor Psa...\n"; }

void WagTail() { cout « "Machanie ogonem...\n"; }

void Mow()const { cout « "Hau!\n"; }

void Ruch()const { cout « "Pies przeszedł 5 krokow...\n"; )

};

int main()

{

Ssak *pPies = new Pies; pPies->Ruch(); pPies->Mow() ;

return 0;

}

Otrzymany wskaźnik możesz wykorzystać do wywoływania dowolnej metody klasy Ssak. Jedyne co potrzebujesz to możliwość wywoływania odpowiednich metod nadpisanych w klasie Pies. Pozwalają na to metody wirtualne. Ilustruje to listing 17.1. Zwróć uwagę co się dzieje z metodami, które nie są wirtualne.

Listing 17.1. Wykorzystanie metod wirtualnych

1:

2:

3:

4:

5:

6:

7:

6:

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



To jest właśnie główna zaleta polimorfizmu C++. Możesz np. stworzyć różne typy okienek - okna dialogowe, paski, okna edycyjne, listy i dać każdemu wirtualną metodę Rysuj <). Następnie poprzez stworzenie wskaźnika do okna i przypisaniu do pól dialogowych i innych typów pochodnych, możesz wywołać metodę Rysuj () bez zastanawiania się, jaki jest typ aktualnie obsługiwanego okna. Właściwa metoda zostanie wywołana bez Twojej ingerencji.


//Listing 17.1 Wykorzystanie metod wirtualnych

łinclude <iostream.h>

class Ssak

{

public:

Ssak():jegoWiek(1) { cout « "Konstruktor Ssaka...\n"; ) ~Ssak() { cout « "Destruktor Ssaka...\n"; }

void Ruch() const ( cout « "Ssak przeszedł jeden krok\n"; } virtual void Mow() const { cout « "Odgłos Ssaka!\n"; ) protected:

int jegoWiek;

) ;

class Pies : public Ssak

{

public;

Pies () ( cout « "Konstruktor Psa...\n"; }

-Pies() { cout « "Destruktor Psa...\n"; )

void WagTail() { cout « "Machanie ogonem...\n"; }

void Mow()const { cout « "Hau!\n"; }

void Ruch()const ( cout « "Pies przeszedł 5 krokow...\n"; )

} ;

int main()

<

Ssak *pPies = new Pies; pPies->Ruch() ; pPies->Mow() ;

return 0;

)


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0023 Zaczynamy 7 C++ to nie tylko lepsze C Prawdą jest, że C++ to rozbudowane C
godzino, 14 do godzino,..........po poLicL/n/AL (godzino,17 to
I nie czujcie się zawiedzeni, jak na grze i tak wszystko pójdzie zupełnie inaczej. To jest właśnie c
IMG35 (4) 42 re zaspokajały jego Iradycyjne potrzeby. To jest właśnie przykład zachowania, które na
174,175 Jak skutecznie negocjować • Umiejętność kontaktów m i ę d z y I u d z k i c h. To jest właśn
zyjemy w ciele dzikiego zwierzecia6 i nie utuli do snu. I nikt nie wie, gdzie jestem”. Pan dodaje, ż
out0024 jpeg To jest właśnie idea pracy Hoggarta: „autentyczna społeczność klasy robotniczej znajduj
Rozdział 1 17% (to jest około 1,11) pojemności życiowej pluć. W płucach pozostaje około 25% powietrz
126 IX. Całka oznaczona To jest właśnie wzór Wallisa. Ma on znaczenie historyczne, jest to bowiem pi
50 Akt trzeci leutner. A to co znowu? Przecież to jest właśnie ta sztuka, którą tu teraz grają, jeśl
II To jest właśnie to, w co nie chciałbym wnikać. I Czy wprawia cię to w zakłopotanie? II Byłem na
NAJBARDZIEJ STRZEŻONA TAJEMNICA W POLSCE ROZWIĄZANA TO JEST WŁAŚNIE KĄCIK MUZYCZNYf w BMrofflHI
I nie czujcie się zawiedzeni, jak na grze i tak wszystko pójdzie zupełnie inaczej. To jest właśnie c
e to jest porowatość -> wielkość charakteryzująca złoże usypania (Np. cukier) € = V*oina

więcej podobnych podstron