node128






20.2 Konstruktory i destruktory klas pochodnych



























Dalej: 20.3 Operator przypisania dla
W górę: 20. Dziedziczenie i polimorfizm
Wstecz: 20.1 Podstawy dziedziczenia







20.2 Konstruktory i destruktory klas pochodnych



Jak wspomnieliśmy, konstruktory nie są dziedziczone. Jeśli
w klasie pochodnej nie zdefiniowaliśmy konstruktora, to zostanie
użyty konstruktor domyślny. Aby jednak powstał obiekt klasy
pochodnej, musi być najpierw utworzony podobiekt klasy
nadrzędnej wchodzący w jego skład. On również zostanie utworzony
za pomocą konstruktora domyślnego, który zatem musi istnieć!






Podobiekt klasy bazowej jest tworzony jeszcze przed
wykonaniem konstruktora klasy pochodnej.





Co w takim razie zrobić, aby do konstrukcji podobiektu klasy bazowej
zawartego w tworzonym właśnie obiekcie klasy pochodnej
użyć konstruktora innego niż domyślny?
Wówczas musimy w klasie pochodnej zdefiniować konstruktor,
a wywołanie właściwego konstruktora dla podobiektu klasy bazowej
musi nastąpić poprzez listę inicjalizacyjną
- wewnątrz konstruktora byłoby już
za późno
(patrz
rozdział o konstruktorach ).
Na liście tej umieszczamy jawne wywołanie konstruktora dla podobiektu.
Tak więc, jeśli klasą bazową jest klasa 
A i chcemy wywołać
jej konstruktor, aby „zagospodarował'' podobiekt tej klasy
dziedziczony w klasie
B, to na liście inicjalizacyjnej
konstruktora klasy pochodnej 
B umieszczamy wywołanie

A(...), gdzie w miejsce kropek wstawiamy oczywiście argumenty
dla wywoływanego konstruktora. Wywołuje się tylko konstruktory
bezpośredniej klasy bazowej („ojca'', ale nie „dziadka'';
oczywiście konstruktor ojca poprzez swoją listę inicjalizacyjną
może wywołać konstruktor swojego ojca...).


Na przykład w poniższym fragmencie definiujemy klasę bazową

Point. Nie ma ona w ogóle konstruktora domyślnego.



Wyszukiwarka

Podobne podstrony:
node12
node127
node126
node121
node126
node129
node126 EAT2FBA72AHUMICANGCYU4DWVTTCBUBOOFOV5DI
node128
node124
node127
node126
node124
node12 5RJIDD32YMXJNTH7EYXB4KIBTOGGXXKPFHRU6VA
node120
node128

więcej podobnych podstron