#include #include using namespace std; class prvek { public: virtual void vypis() = 0; }; class cislo : public prvek { int hodnota; public: cislo(int hodnota = 0) { this->hodnota = hodnota; } void vypis() { cout << hodnota << endl; } }; class retezec : public prvek { string hodnota; public: retezec(string hodnota = 0) { this->hodnota = hodnota; } void vypis() { cout << hodnota << endl; } }; class zlomek : public prvek { int citatel; int jmenovatel; public: float hodnota; zlomek(int citatel = 0, int jmenovatel = 1) { this->citatel = citatel; this->jmenovatel = jmenovatel; hodnota = (float)citatel / (float) jmenovatel; } void vypis() { cout << citatel << "/" << jmenovatel << endl; } }; int main(int argc, char** argv) { prvek* p = new cislo(23); p->vypis(); p = new retezec("ABCD"); p->vypis(); p = new zlomek(3, 4); p->vypis(); cislo c(10); prvek& r = c; r.vypis(); // vytvoreni polymorfniho pole prvek** pole = new prvek*[10]; int pocet = 4; pole[0] = new cislo(10); pole[1] = new retezec("EFGH"); pole[2] = new zlomek(1, 2); pole[3] = new retezec("ABCD"); for(int i = 0; i < pocet; i++) { pole[i]->vypis(); prvek *p = pole[i]; if (typeid(*p) == typeid(zlomek)) { cout << "zde" << endl; cout << ((zlomek*)(pole[i]))->hodnota << endl; } } return 0; }