Advertisement
Kocyk

dziedziczenie klas

Nov 8th, 2019
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4. class FunkcjeZyciowe
  5. {
  6. public:
  7.     virtual void jedz(int ilosc)=0;
  8.     virtual void pij(int ilosc)=0;
  9.     virtual void spij(int ilosc)=0;
  10.     virtual void bawsie(int ilosc)=0;
  11. };
  12. class zwierze
  13.     string imie;
  14. protected:
  15.     int glod=0,pragnienie=0,zmeczenie=0,humor=0
  16. public:
  17.     zwierze(string nazwisko)
  18.     {
  19.         imie = nazwisko;
  20.     }
  21.     void ustawImie(string nazwisko)
  22.     {
  23.         imie = nazwisko;
  24.     }
  25.     virtual const string dajRodzajZwierzecia()const
  26.     {
  27.         return "zwirzatko: ";
  28.     }
  29.     const string naLancuch()const
  30.     {
  31.         stringstream ss;
  32.         ss << dajRodzajZwierzecia() << imie << "Glod = "<< glod
  33.            <<"pragnienie= "<<pragnienie<<"zmeczenie= "
  34.           <<zmeczenie<<"Humor= "<<humor;
  35.         return ss.str();
  36.     }
  37. };
  38. class pies: public zwierze, public FunkcjeZyciowe
  39. {
  40. public:
  41.     pies(string nazwisko) : zwierze(nazwisko){}
  42.     void szczekaj()
  43.     {
  44.         cout << "hau" << endl;
  45.     }
  46.     void dajLape()
  47.     {
  48.         cout << "Łapa dawana jest" << endl;
  49.     }
  50.     const string dajRodzajZwierzecia()const
  51.     {
  52.         return "Pies: ";
  53.     }
  54. };
  55. class SchroniskoDlaZwierzat
  56. {
  57.   private:
  58.     zwierze* pojemnosc[100];
  59.   public:
  60.     void dodajZwierze(zwierze* z,int numer)
  61.     {
  62.         pojemnosc[numer]= z;
  63.     }
  64.     zwierze* dajZwierze(int numer)
  65.     {
  66.          return pojemnosc[numer];
  67.     }
  68.     };
  69.  
  70.  
  71. int main()
  72. {
  73.     pies p(":D");
  74.     zwierze zwierz(":)");
  75.     cout << zwierz.naLancuch() << endl;
  76.     zwierz.ustawImie(":O");
  77.     p.szczekaj();
  78.     p.dajLape();
  79.     zwierze &refz = zwierz;
  80.     zwierze &refp = p;
  81.     cout << refz.naLancuch() << endl;
  82.     cout << refp.naLancuch() << endl;
  83.     zwierze *wskz = &zwierz;
  84.     zwierze *wskp = &p;
  85.     cout << wskp -> naLancuch() << endl;
  86.     cout << wskz -> naLancuch() << endl;
  87.     pies* wskp2 = dynamic_cast<pies *>(wskp);
  88.  
  89.  
  90.     if(wskp2 != NULL) cout << wskp2 -> naLancuch() << endl;
  91.     pies* wskp3 = dynamic_cast<pies *>(wskz);
  92.  
  93.  
  94.     if(wskp3 != NULL) cout << wskp3 -> naLancuch() << endl;
  95.     else cout << "Nieprawidlowy typ" << endl;
  96.  
  97.     pies& refpies2 =  dynamic_cast<pies &>(refp);
  98.     cout << refpies2.naLancuch()<<endl;
  99.     try{
  100.         pies& refpies3 = dynamic_cast<pies &> (refz);
  101.         cout<<refpies3.naLancuch()<<endl;
  102.  
  103.     }
  104.     catch(bad_cast &bc)
  105.     {
  106.         cout<<"nieprawidlowy typ2: "<<endl;
  107.         cout<<bc.what()<<endl;
  108.     }
  109.  
  110.     SchroniskoDlaZwierzat schronisko;
  111.     pies biezeg1("Bzizgo");
  112.     pies biezeg2("yomama");
  113.     pies biezeg3("papaja");
  114.  
  115.     pies *wskbiez1 = &biezeg1;
  116.     pies *wskbiez2 = &biezeg2;
  117.     pies *wskbiez3 = &biezeg3;
  118.  
  119.     schronisko.dodajZwierze(wskbiez1,0);
  120.     schronisko.dodajZwierze(wskbiez2,1);
  121.     schronisko.dodajZwierze(wskbiez3,2);
  122.     for(int i=0;i<3;i++)
  123.         dynamic_cast<pies*>(schronisko.dajZwierze(i))->szczekaj();
  124.  
  125.  
  126.  
  127.  
  128.  
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement