Untitled
raw download clone
TEXT
views 20
,
size 2534 b
#include <iostream>
#include <ios>
#include <iomanip>
#include <typeinfo>
using namespace std;

class Zwierze
{
    string mImie;
    static int licznik;
public:
    Zwierze(string imie)
    {
        licznik++;
        mImie = imie;
    }
    void ustawImie(string mImie)
    {
        this->mImie = mImie;
    }
    virtual string dajRodzajZwierzecia() const
    {
        return "Zwierzatko: ";
    }
    const string naLancuch()
    {
        return dajRodzajZwierzecia()+mImie;
    }
    static int ileZwierzat()
    {
        return licznik;
    }

};

class Pies: public Zwierze
{
    public:
        Pies(string imie) : Zwierze(imie)
        {

        }
        void szczekaj()
        {
            cout<<"hau hau" <<endl;
        }
        void dajLape()
        {
            cout<<"Podaj lape" << endl;
        }
        string dajRodzajZwierzecia() const
        {
            return "Pies: ";
        }

};
class SchroniskoDlaZwierzat
{
    Zwierze*    mZwierzeta[100];
public:
    void ZabierzDoSchroniska(Zwierze* z,int numer)
    {
        mZwierzeta[numer]=z;
    }
    Zwierze* przygarnijZwierze(int numer)
    {
        return mZwierzeta[numer];
    }
    SchroniskoDlaZwierzat(Zwierze* Zwierzeta[],int liczba)
    {
        for(int i=0;i<liczba;i++)
        {
            mZwierzeta[i]=Zwierzeta[i];
        }
    }
};

int Zwierze::licznik=0;
int main()
{
    Zwierze z("Janusz");
    Zwierze& refZwierzatko=z;
    Pies p("Reksio");
    Zwierze& refPies=p;
    Zwierze* wskZwierze = &z;
    Zwierze* wskPies;
    wskPies=&p;
    cout<<wskZwierze->naLancuch()<<endl;
    cout<<wskPies->naLancuch()<<endl;
    cout<<refZwierzatko.naLancuch()<<endl;
    cout<<refPies.naLancuch()<<endl;

    Pies* wskPies2=dynamic_cast<Pies*>(wskPies);
    Pies* wskPies3=dynamic_cast<Pies*>(wskZwierze);
    if(wskPies2 != NULL)
        cout<<wskPies2->naLancuch()<<endl;
    else
        cout<<"Niepoprawny typ"<<endl;
    if(wskPies3!=NULL)
        cout<<wskPies3->naLancuch()<<endl;
    else
        cout<<"Niepoprawny typ"<<endl;

    Pies& refPies2 = dynamic_cast<Pies&>(refPies);
    cout<<refPies2.naLancuch()<<endl;

    /*try
    {
        Pies& refPies3 = dynamic_cast<Pies&>(refZwierze);
        cout<<refPies3.naLancuch()<<endl;
    }

    catch (bad_cast &bc)
    {
        cout<<"Niepoprawny typ"<<endl;
        cout<<bc.what()<<endl;
    }*/
    p.szczekaj();
    p.dajLape();
    return 0;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.