#include using namespace std; // Uproszczenie dziedziczenia: pola tylko publiczne // 1. Tworzymy klase bazowa: Figura // 2. Dodajemy klasy pochodne: Okrag i Prostokat class Figura { public: string kolor; Figura (); Figura (string) ; string podajKolor() ; }; Figura::Figura () { // konstruktor bezargumentowy kolor = ""; } Figura::Figura (string _k) { // konstruktor 1-argumentowy kolor = _k; } string Figura::podajKolor() { return kolor; } /************ Pierwsza klasa pochodna: Okrag ************/ class Okrag : public Figura { public: double R; Okrag (string, double); double podajPromien() ; }; Okrag::Okrag (string _k, double _r) { kolor = _k; R = _r; } double Okrag::podajPromien() { return R; } /************** Druga klasa pochodna: Prostokat ***************/ class Prostokat : public Figura { public: double A, B; Prostokat (string, double, double); double podajA() ; double podajB() ; }; Prostokat::Prostokat (string _k, double _a, double _b) { kolor = _k; A = _a; B = _b; } double Prostokat::podajA() { return A; } double Prostokat::podajB() { return B; } /************ Sprawdzimy dzialanie w funkcji main() *************/ int main() { Okrag O ("zielony", 1); cout << "Okrag: " << O.podajKolor () << " " << O.podajPromien() << endl; Prostokat P ("czerwony", 3, 4); cout << "Prostokat : " << P.podajKolor() << " " << P.podajA() << " " << P.podajB() << endl << endl; Okrag &ref_O = O; // Mozna stosowac referencje i wskazniki Prostokat* wsk_P = &P; cout << "Okrag (via &) : " << ref_O.podajKolor() << endl; cout << "Prostokat (via *) : " << wsk_P->podajKolor() << endl << endl; return 0; }