Konstruktory i destruktory
Jeśli B jest klasą pochodną od A to najpierw wołany jest konstruktor klasy A a potem konstruktor klasy B. Konstruktor klasy B musi dostarczyć argumenty dla konstruktora A.
B(int x, int y,char kol) : A(x, y) :
- w przypadku konstruktora kopiującego:
jeśli klasa pochodna B nie ma konstruktora kopiującego to w razie potrzeby zostanie wywołany jej domyślny konstruktor kopiujący. Działa on następująco:
- wywołuje konstruktor kopiujący z A (zdefiniowany lub domyślny)
- inicjalizuje te składowe B które nie pochodzą z A
jeśli klasa B ma zdefiniowany konstruktor kopiującego to działa on następująco:
- wywołuje konstruktor klasy bazowej wymieniony w nagłówku (może to być dowolny konstruktor klasy bazowej)
- Jeśli w nagłówku nie został wymieniony żaden konstruktor klasy bazowej to zostanie wywołany bezargumentowy konstruktor klasy bazowej, jeśli klasa bazowa nie ma konstruktora bezargumentowego, to wystąpią błędy kompilacji
B(B &b) : A(b); //wywołanie konstruktora kopiującego z A do //którego zostanie przekazana część B //odziedziczona z A
B::B(int i) : Bar(i), m(i+1) { // ...
//Pseudo konstruktor:inicjacja typów wbudowanych
X() : i(7), f(1.4), c('x'), s("howdy") {}
destruktory wołane są automatycznie w kolejności odwrotnej niż konstruktory