#include using namespace std; class obrazec { protected: int a; string barva; string typ; public: obrazec(string barva) { this->barva = barva; typ = "obrazec"; a = 0; } void kresli() { cout << "Kreslim: " << typ << ", barva " << barva << endl; } }; class ctverec : public obrazec { public: // jelikoz obrazec ma pouze parametricky konstruktor, je nutne jej zavolat primo ctverec(int a, string barva) : obrazec(barva) { this->a = a; typ = "ctverec"; } // zastineni metody void kresli() { // zavolani metody predka obrazec::kresli(); // vypsani obvodu a obsahu cout << "Obsah: " << a * a << " Obvod: " << 4 * a << endl; } }; class obdelnik : public obrazec { protected: int b; public: // jelikoz obrazec ma pouze parametricky konstruktor, je nutne jej zavolat primo obdelnik(int a, int b, string barva) : obrazec(barva) { this->a = a; this->b = b; typ = "obdelnik"; } // zastineni metody void kresli() { // zavolani metody predka obrazec::kresli(); // vypsani obvodu a obsahu cout << "Obsah: " << a * b << " Obvod: " << 2 * (a + b) << endl; } }; int main(int argc, char** argv) { obrazec o("cerna"); o.kresli(); ctverec c(4, "zelena"); c.kresli(); obdelnik ob(1,2,"modra"); ob.kresli(); o = c; o.kresli(); /* obdelnik *c1 = (obdelnik*)&o; c1->kresli(); */ return 0; }