Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<typeinfo> // biblioteka do dynamic cast
- using namespace std;
- class Funkcje_zyciowe{
- public:
- virtual void jedz() = 0;
- virtual void pij() =0;
- virtual void spij() =0;
- virtual void baw_sie() =0;
- };
- class zwierze{
- string imie;
- protected:
- int glod = 0;
- int zmeczenie =0;
- int pragnienie =0;
- int humor =0;
- }
- public:
- zwierze( string im){
- imie = im;
- }
- virtual string dajRodzajZwierzecia() const{ // zad 2
- return "Zwierzatko: ";
- }
- const string naLancuch() const
- { // zwraca stala ref
- cout << dajRodzajZwierzecia();
- cout << glod << endl;
- cout << pragnienie << endl;
- return imie;
- }
- };
- class pies: public zwierze, public Funkcje_zyciowe{
- public:
- pies(string im): zwierze(im){};
- void szczekaj(){
- cout << " Hau szczek szczek hau " << endl;
- }
- void podaj_lape(){
- cout << " Pjesek podal lapke" << endl;
- }
- string dajRodzajZwierzecia() const{
- return "Pies: ";
- }
- void jedz(){
- int jedzenie;
- cout << "Podaj ilosc jedzenia: " << endl;
- cin >> jedzenie;
- glod -= jedzenie;
- //cout << glod << endl;
- }
- void pij(){
- int woda;
- cout << "Podaj ilosc wody" << endl;
- cin >> woda;
- pragnienie -= woda;
- cout << pragnienie << endl;
- }
- void spij(){
- int czas;
- cout << "Ile dasz odpoczac? " << endl;
- cin >> czas;
- zmeczenie -= czas;
- cout << zmeczenie << endl;
- }
- void baw_sie(){
- int czas;
- cout << "Ile chcesz sie bawic? " << endl;
- cin >> czas;
- humor += czas;
- cout << humor << endl;
- }
- };
- class kot: public zwierze, public Funkcje_zyciowe{
- };
- class SchroniskoDlaZwierzat{
- zwierze* ilosc_miejsc[100];
- public:
- SchroniskoDlaZwierzat(zwierze* tabwsk[],int rozmiar){
- for (int i = 0; i< rozmiar; i++) ilosc_miejsc[i] = tabwsk[i];
- }
- zwierze* daj_zwierze(int nr){
- return ilosc_miejsc[nr];
- }
- void dodaj_zwierze(zwierze* z, int nr){
- ilosc_miejsc[nr] = z;
- }
- };
- int main()
- {
- zwierze zwierzatko("Ubot");
- pies pjes("Wincent");
- /* zwierze* tab[5]= {new pies("Ubot"), new pies("Kuba"), new pies("Wincent"), new pies("Luska")};
- SchroniskoDlaZwierzat schronisko(tab,4);
- for(int i = 0; i < 4; i++){
- //cout << dynamic_cast<pies*>(schronisko.daj_zwierze(i)) -> naLancuch() << endl;
- dynamic_cast<pies*>(schronisko.daj_zwierze(i)) -> szczekaj(); // pryiorytet operatorow, najper dynamic a pozniej szczekanie
- pies* p = dynamic_cast<pies*>(schronisko.daj_zwierze(i));
- cout << p -> naLancuch() << endl;
- }
- cout << " Jak nazywa sie pies? " << pjes.naLancuch() << endl;
- pjes.szczekaj();
- pjes.podaj_lape();
- pjes.dajRodzajZwierzecia();
- schronisko.dodaj_zwierze(zwierze* zwierzatko);
- zwierze &refz = zwierzatko; // zad 3
- zwierze &refp = pjes;
- cout << refz.naLancuch() << endl;
- cout << refp.naLancuch() << endl;
- zwierze *wskz = &zwierzatko;
- zwierze *wskp = &pjes;
- pies* wskp2 = dynamic_cast<pies*>(wskp);
- if(wskp2 != NULL)
- cout << wskp2 -> naLancuch() << endl;
- pies* wskp3 = dynamic_cast<pies*>(wskz);
- if(wskp3 != NULL)
- cout << wskp3 -> naLancuch() << endl;
- else
- cout << "nie da rady, nieprawidlowy typ" << endl;
- cout << wskz -> naLancuch() << endl;
- cout << wskp -> naLancuch() << endl;
- pies& refp2 = dynamic_cast<pies&>(refp); // rzutowanie dynamiczne tylko ze ref i wsk
- cout << refp2.naLancuch() << endl; // metody wirtualne, obiekty
- try{
- pies& refp3 = dynamic_cast<pies&>(refz); // refz na pies& i w refp3 jest wynik
- cout << refp3.naLancuch() << endl;
- }
- catch (bad_cast &bc)
- {
- cout << "Nie powiodlo sie, nieprawidlowy typ" << endl;
- cout << bc.what() << endl;
- }*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement