#include <iostream> using namespace std; class Figura { protected: int height; public: Figura(int height = 0) : height(height) { } virtual void what() { cout << "Figura: h=" << height <<endl; } }; class Prostokat : public Figura { private: int base; void what() { cout << "Prostokat: (h,b)=(" << height << "," << base << ")\n"; } public: Prostokat(int height = 0, int base = 0) : Figura(height), base(base) { } }; int main() { Figura *f = new Prostokat(4,5) , &rf = *f; Prostokat *p = new Prostokat(40,50); // what w Prostokat private, ale w Figura nie! f->what(); // Prostokat rf.what(); // Prostokat // p->what(); nie, bo what prywatne w Prostokat // Ale ponizsze legalne! ((Figura*)p)->what(); // Prostokat ((Figura&)*p).what(); // Prostokat // OK: wersja publiczna z klasy bazowej Figura p->Figura::what(); // Figura }