#include #include using namespace std; class Zivotinja { public: Zivotinja(double t) :_tezina(t) { cout << "Konstruktor zivotinje" << endl; } virtual ~Zivotinja() { cout << "Destruktor zivotinje" << endl; } double vratiTezinu() const { return _tezina; } virtual string kaziZdravo() const = 0; private: double _tezina; }; class Pas : public Zivotinja { public: Pas(double t, string s) :Zivotinja(t), _ime(s) { cout << "Konstruktor psa" << endl; } ~Pas() { cout << "Destruktor za psa" << endl; } string kaziZdravo() const { return "Av - av"; } private: string _ime; }; class Macka : public Zivotinja { public: Macka(double t, string s) :Zivotinja(t), _ime(s) { cout << "Konstruktor macke" << endl; } ~Macka() { cout << "Destruktor za macku" << endl; } string kaziZdravo() const { return "Mjau - mjau"; } private: string _ime; }; void f1(Zivotinja &z) { cout << z.kaziZdravo() << endl; } void f2(Zivotinja *z) { cout << z->kaziZdravo() << endl; } int main() { //Zivotinja z(12); Pas p(8, "Dzeki"); Macka m(3, "Maca"); //cout << "Tezina zivotinje z je " << z.vratiTezinu() << endl; cout << "Tezina psa p je " << p.vratiTezinu() << endl; cout << "Tezina macke m je " << m.vratiTezinu() << endl; //cout << "Zivotinja z kaze: " << z.kaziZdravo() << endl; cout << "Pas p kaze: " << p.kaziZdravo() << endl; cout << "Macka m kaze: " << m.kaziZdravo() << endl; Zivotinja* niz[3]; niz[0] = new Pas(3, "Zucko"); niz[1] = new Macka(2, "Mica"); //niz[2] = new Zivotinja(10); niz[2] = new Pas(10, "Rex"); for (int i = 0; i < 3; i++) cout << niz[i]->kaziZdravo() << endl; for (int i = 0; i < 3; i++) f1(*niz[i]); for (int i = 0; i < 3; i++) f2(niz[i]); for (int i = 0; i < 3; i++) delete niz[i]; return 0; }