Zaawansowane funkcje 193
W liniach 53 i 54 wypisywany jest wiek obydwu KOTów. Faktycznie, Boot ma tyle samo lat co Frisky (a nie domyślną wartość 5). W linii 56 wiek Frisky ulega zmianie na 7. Ponownie wypisujemy wiek obu kotów. Frisky ma 7 lat, a Boot nadal 6. Dowodzi to, że obiekty znajdują się w oddzielnych obszarach pamięci.
Zaawansowane funkcje 193
nowy KOT
jegoWiek
Podczas usuwania obiektów KOT z pamięci automatycznie są wywoływane destruktory klasy. Ich implementacja znajduje się w liniach 37—43. Za pomocą delete kasowane są obydwa wskaźniki, jegoWiek i jegoWaga, zwalniana jest zajmowana przez nie pamięć. Dla bezpieczeństwa, wskaźnikom jest nadawana wartość NULL.
W ciągu tej godziny nauczyłeś się przeciążać wewnętrzne funkcje klas. Wiesz także w jaki sposób przypisać wartości domyślne parametrom funkcji. Poznałeś zasady wyboru pomiędzy rozwiązaniami z wartościami domyślnymi a przeciążaniem funkcji.
Przeciążanie konstruktorów klas pozwala na tworzenie elastycznych klas, które mogą być stworzone z innych obiektów. Inicjalizacja obiektu powinna być umieszczona w części inicjalizującej, której działanie jest bardziej efektywne niż zwykłe przypisanie wartości do zmiennych w treści konstruktora.
Jeśli nie stworzysz konstruktora kopiującego, to kompilator dostarczy własny, ale jego działanie nie zawsze jest prawidłowe (płytkie kopiowanie). Jeśli klasa zawiera wskaźniki do osobno rezerwowanych obszarów pamięci na stercie, to musisz napisać własny konstruktor kopiujący, który będzie rezerwował pamięć na kopiowane wartości.
W liniach 53 i 54 wypisywany jest wiek obydwu KOTów. Faktycznie, Boot ma tyle samo lat co Frisky (a nie domyślną wartość 5). W linii 56 wiek Frisky ulega zmianie na 7. Ponownie wypisujemy wiek obu kotów. Frisky ma 7 lat, a Boot nadal 6. Dowodzi to. że obiekty znajdują się w oddzielnych obszarach pamięci.
nowy KOT
jegoWiek
Podczas usuwania obiektów KOT z pamięci automatycznie są wywoływane destruktory klasy. Ich implementacja znajduje się w liniach 37—43. Za pomocą delete kasowane są obydwa wskaźniki, jegoWiek i jegoWaga, zwalniana jest zajmowana przez nie pamięć. Dla bezpieczeństwa, wskaźnikom jest nadawana wartość NULL.
W ciągu tej godziny nauczyłeś się przeciążać wewnętrzne funkcje klas. Wiesz także w jaki sposób przypisać wartości domyślne parametrom funkcji. Poznałeś zasady wyboru pomiędzy rozwiązaniami z wartościami domyślnymi a przeciążaniem funkcji.
Przeciążanie konstruktorów klas pozwala na tworzenie elastycznych klas, które mogą być stworzone z innych obiektów. Inicjalizacja obiektu powinna być umieszczona w części inicjalizującej, której działanie jest bardziej efektywne niż zwykle przypisanie wartości do zmiennych w treści konstruktora.
Jeśli nie stworzysz konstruktora kopiującego, to kompilator dostarczy własny, ale jego działanie nie zawsze jest prawidłowe (płytkie kopiowanie). Jeśli klasa zawiera wskaźniki do osobno rezerwowanych obszarów pamięci na stercie, to musisz napisać własny konstruktor kopiujący, który będzie rezerwował pamięć na kopiowane wartości.