Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. /*
  2. Polimorfizm - przykład użycia
  3. */
  4.  
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. //Klasa Zwierze, po ktorej dziedziczą pozostałe
  10. class Zwierze {
  11.     public: virtual void glos() = 0;
  12. };
  13.  
  14. class Pies : public Zwierze
  15. {
  16.     public: virtual void glos() {
  17.         cout << "Hau! Hau!" << endl;
  18.     }
  19. };
  20.  
  21. class Kot : public Zwierze
  22. {
  23.     public: virtual void glos() {
  24.         cout << "Mial! Mial!" << endl;
  25.     }
  26. };
  27.  
  28. class Krowa : public Zwierze
  29. {
  30.     public: virtual void glos() {
  31.         cout << "Muu!" << endl;
  32.     }
  33. };
  34.  
  35. class Kon : public Zwierze
  36. {
  37.     public: virtual void glos() {
  38.         cout << "Ihaaa!" << endl;
  39.     }
  40. };
  41.  
  42. class Ptaszek : public Zwierze
  43. {
  44.     public: virtual void glos() {
  45.         cout << "Cwir! Cwir!" << endl;
  46.     }
  47. };
  48.  
  49. //Uniwersalna funkcja dzięki polimorfizomowi - może działać na każdej klasie pochodnej od klasy Zwierze
  50. //Jeżeli za jakis czas dodamy do programu klasę to ta funkcja nie ulegnie zmianie
  51. void dajGlos (Zwierze *pt2)
  52. {
  53.     pt2 -> glos();
  54. }
  55.  
  56. int main()
  57. {
  58.     //Tworzenie obiektow
  59.     Pies pies;
  60.     Kot kot;
  61.     Krowa krowa;
  62.     Kon kon;
  63.     Ptaszek ptaszek;
  64.  
  65.     //Wskaźnik polimorficzny typu abstrakcyjnego Zwierze
  66.     Zwierze *pt;
  67.  
  68.     pt = &pies;
  69.     dajGlos(pt);
  70.  
  71.     pt = &kot;
  72.     dajGlos(pt);
  73.  
  74.     pt = &krowa;
  75.     dajGlos(pt);
  76.  
  77.     pt = &kon;
  78.     dajGlos(pt);
  79.  
  80.     pt = &ptaszek;
  81.     dajGlos(pt);
  82.    
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement