class B: public A {Każdy obiekt klasy B będzie posiadał zarówno pola i metody zadeklarowane w klasie A jak i te zadeklarowane w klasie B. Przy tworzeniu obiektu klasy pochodnej najpierw wywoływany jest konstruktor klasy bazowej, a później konstruktor klasy pochodnej. Kiedy obiekt jest niszczony, kolejność wywołania destruktorów jest odwrotna - najpierw wywoływany jest destruktor klasy pochodnej, a później destruktor klasy podstawowej. Jeśli konstruktor klasy bazowej wymaga podania argumentów, podajemy je na liście inicjującej.
public:
// składowe publiczne
private:
// składowe prywatne
};
Składowe klasy podstawowe są dostępne w klasie pochodnej, jeśli zostały zadeklarowane jako publiczne lub chronione (protected), a składowe prywatne są niedostępne.
Przykład:
class Punkt {
public:
Punkt(double _x, double _y): x(_x), y(_y) {}
void przesuń(double dx, double dy) { x+=dx; y+=dy; }
void drukuj() { cout << "(" << x << "," << y << ")"; }
protected:
double x, y;
};
class KolorowyPunkt: public Punkt {
public:
KolorowyPunkt(double _x, double _y, int _kolor): Punkt(_x, _y), kolor(_kolor) {}
void ustawKolor(int _kolor) { kolor=_kolor; }
void drukuj() { Punkt::drukuj(); cout << "kolor " << kolor; }
private:
int kolor;
};
Uwagi: