Poznaj C++ w$ godziny0202

Poznaj C++ w$ godziny0202



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.

Podsumowanie

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.

Podsumowanie

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.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0196 Zaawansowane funkcje 187 53:    } 54:    cou
Poznaj C++ w$ godziny0194 Zaawansowane funkcje 185 57: Prost.RysujKsztalt(); 58: cout «
Poznaj C++ w$ godziny0198 Zaawansowane funkcje 189Inicjalizacja obiektów Dotychczas, wartości wewnęt
Poznaj C++ w$ godziny0200 Zaawansowane funkcje 191Listing 13.3. Konstruktory
Poznaj C++ w$ godziny0123 Zaawansowane sterowanie programem 111 W linii 32 obliczana jest reszta z d
Poznaj C++ w$ godziny0121 Zaawansowane sterowanie programem 109 W liniach 12-15 wprowadzamy wartości
Poznaj C++ w$ godziny0119 Zaawansowane sterowanie programem 107Pętle while Pętla while pozwala na po
Poznaj C++ w$ godziny0125 Zaawansowane sterowanie programem Listing 8.6. Pomijanie pętli while 1:
Poznaj C++ w$ godziny0127 Zaawansowane sterowanie programem 115Listing 8.8. Jeszcze raz pętla while
Poznaj C++ w$ godziny0129 Zaawansowane sterowanie programem 117Listing 8.10. Demonstracja wielokrotn
Poznaj C++ w$ godziny0131 Zaawansowane sterowanie programem 119EFEKT DZIAŁANIA: No to ile razy sie p
Poznaj C++ w$ godziny0133 Zaawansowane sterowanie programem 121 Jaki znak?
Poznaj C++ w$ godziny0135 Zaawansowane sterowanie programem 153 20:    break; 21: &nb
Poznaj C++ w$ godziny0156 145Zaawansowane wykorzystanie wskaźników W liniach 6-13 deklarujemy klasę
Poznaj C++ w$ godziny0158 Zaawansowane wykorzystanie wskaźników 147 32:    } 33: 34:
Poznaj C++ w$ godziny0160 Zaawansowane wykorzystanie wskaźników 149Do czego służy wskaźnik this Gdyb
Poznaj C++ w$ godziny0162 Zaawansowane wykorzystanie wskaźników 151 Zaawansowane wykorzystanie wskaź
Poznaj C++ w$ godziny0182 Zaawansowane referencje i wskaźniki 171 int PobierzWiek() const { return j
Poznaj C++ w$ godziny0184 Zaawansowane referencje i wskaźniki 173 Ponieważ wiemy, że obiekt nie będz

więcej podobnych podstron