#include using namespace std; // -- klasa Pojazd class Pojazd{ private: int liczba_kol; // pole prywatne, nie ma do niego dostepu z klasy pochodnej protected: // NOWE pole! protected - czyli pole chronione, ma wlasciwosci pola prywatnego, ale jest dostepne przy dziedziczeniu double predkosc; // pole chronione w klasie bazowej i pochodnej, trzyma predkosc pojazdu public: double przyspieszenie; // pole publiczne w klasie bazowej i pochodnej, trzyma przyspieszenie pojazdu void Przyspiesz(double max); // metoda publiczna w klasie bazowej i pochodnej }; void Pojazd::Przyspiesz(double max){ if(predkosc pola publiczne sa publiczne w klasie bazowej sa publiczne w klasie pocodnej; pola chronione w klasie bazowej sa chronione w klasie pochodnej; pola prywatne sa niedostepne; class Samolot : public Pojazd { private: const int predkosc_max = 930; // [km/h] maksymalna predkosc samolotu - ta linia powoduje warning public: int Podaj_predkosc_max(); // metoda ktora zwraca maksymalna predkosc samolotu void Podaj_predkosc(double v); // metoda przypisujaca predkosc double Zwroc_predkosc(); // metoda zwracajaca wartosc predkosci void Podaj_liczbe_kol(int n); // metoda przypisujaca liczne kol - nie zadziala! }; int Samolot::Podaj_predkosc_max(){ return predkosc_max; } double Samolot::Zwroc_predkosc(){ return predkosc; } void Samolot::Podaj_predkosc(double _v){ predkosc = _v; } // void Samolot::Podaj_liczbe_kol(int n){ // to nie dziala, gdyz klasa pochodna nie ma dostepu do pol prywatnych klasy bazowej // liczba_kol = n; // } // int main(){ Samolot Boeing; Boeing.Podaj_predkosc(913); cout << "Predkosc samolotu: " << Boeing.Zwroc_predkosc() << endl; Boeing.przyspieszenie = 10; Boeing.Przyspiesz(Boeing.Podaj_predkosc_max()); // Boeing.Przyspiesz(Boeing.predkosc_max); // taka konstrukcja nie zadziala - funkcja bazowa nie ma dostepu do pol prywatnych funkcji pochodnej cout << "Predkosc samolotu po przyspieszeniu: " << Boeing.Zwroc_predkosc() << endl; return 0; }