125

125



Pochodnal ()

{

cout « "konstruktor Pochodnal\n";

}

};

Pochodnal d1(*pd1);

Po

dass Pochodnal : public bazal

{

public:

Pochodnal (Pochodnal &pochodna1) : bazal (pochodnal)

{

cout « "konstruktor kopiowania Pochodnal \n";

}

Pochodnal ()

{

cout « "konstruktor Pochodnal\n";

}

};

Pochodnal d1(*pd1);

Jeśli nie określimy, którego konstruktora używamy, to kompilator automatycznie wybierze domyślny konstruktor. Często nie ten, o który nam chodzi, zwłaszcza wówczas, gdy stosuje się dziedziczenie. We fragmencie „Przed” klasa Pochodnal jest klasą pochodną klasy bazal. W klasie Pochodnal są dwa konstruktory — konstruktor domyślny i konstruktor kopiowania. Fragment kodu tworzący klasę dl jawnie wywołuje konstruktor kopiowania. Co się wówczas dzieje?

Po pierwsze zostaje wywołany konstruktor kopiowania klasy Pochodnal. To powoduje niejawne wywołanie konstruktora klasy bazal. Ale którego? Domyślnego, oczywiście. A więc gdy wywołaliśmy konstruktor kopiowania dla klasy pochodnej, wcale nie wywołaliśmy konstruktora kopiowania dla klasy podstawowej. Jak widzieliśmy w innych wskazówkach, to może prowadzić do powstania błędów, zwłaszcza wtedy, gdy klasa przydziela pamięć. (Informacje na ten temat zawiera wskazówka 94.) Przeanalizujmy teraz fragment „Po”. Tym razem konstruktor kopiowania dla klasy Pochodnal jawnie wywołuje konstruktor kopiowania klasy podstawowej. Dlatego podczas tworzenia klasy dl zostaje wywołany konstruktor kopiowania klasy Pochodnal, a następnie konstruktor kopiowania klasy bazal. Każde kopiowanie wymagane przez klasę podstawowąjest zatem obsługiwane poprawnie.

Przykład: TestYirtualDTor w pliku inherit.cpp


Wyszukiwarka

Podobne podstrony:




Pochodnal (){ cout « "konstruktor klasy pochodna1

71655 Zdjęcie0140 (11) Gaduła :Gadula(lnt k, char *Opls) //konstruktor { strcpy(Tekst, Opis); Ucz =
Фото4106 7.ŻELBETOWE STROPY GĘSTOŻEBROWE. Tworzą konstrukcję w zasadzie monolityczną, dzięki betonow
123 TIF baza2(){ cout« "konstruktor baza2


Koło Naukowe Nowych Metod Konstruowania Maszyn, Politechnika Śląska w Gliwicach h) po naciśnięciu pr
Podział betonów lekkich ze względu na zastosowanie Betony konstrukcyjne - klasa gęstości > D1.4,
kurmaz045 45 1. PASOWANIA I POLA TOLERANCJI1.5.4.4. KONSTRUOWANIE WAŁÓWKonstruowanie wałów wykonuje

skanowanie0005 S80 ^ 8. Lokalizacja zbrojenia w konstrukcjach żelbetowych gdzie: I - natężenie promi
80 Warunkiem porządkującym potrzeby i konstrukcje jest wzrost wartości parametrów, po uwzględnieniu
porządkowy numer składnika struktury systemowej rodziny konstrukcji indeksy oznaczeń określające sta

więcej podobnych podstron