Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
70
Obiektymożemydodatkowopodzielićnadwienastępującegrupy:
30PodstawyC++
.Modyfikowalne-(ang.mutable)poutworzeniuizainicjalizowaniuobiektymogąbyć
wdalszymciąguzmieniane.Obiektamitakimiwszystkiezmienne.
.Niemodyfikowalne-(ang.immutable)takieobiektymogąbyćtworzoneiinicjalizowane,
alepotemniemożnaichjużzmieniać.Nazywamyjestałymi.
Wkrótcezobaczymy,żeobiektymogązawieraćoperacje,cojestjednymzparadygma-
tówprogramowaniaobiektowego.Jednakwtympodrozdzialeskupimysięnaaspektach
związanychzreprezentacjądanych.
Rysunek3.1przedstawiatrzyetapyprocesutworzeniaiinicjalizacjizmiennejorazich
wpływnapamięćkomputera.Wpamięcisurowejkażdybajtmajakąśniezdefiniowanąwar-
tość.Zdefiniowaniezmiennejpoprzezzleceniekomputerowiwykonaniainstrukcjicharc
rezerwujejedenbajtpamięciwprzestrzeniadresowejkomputera,jaktopokazanonary-
sunku3.1b.Wrezultaciezamiastposługiwaćsięadresemnumerycznym,wykorzystujemy
identyfikatordanegoobiektu,takijakcwnaszymprzykładzie.Ponieważzmiennacwciąż
zawierajakąśśmieciowąwartość,musimydokonaćjejinicjalizacji.Inicjalizacjazapisujedo
zmiennejpewnąznanąwartość(stan).WnaszymprzypadkujesttolZl,czylikoddlaliteryZ.
(a)
(b)
(c)
Rysunek3.1.Etapytworzeniaorazinicjalizacjizmiennej(obiektu),atakżeichwpływnapamięćkom-
putera.Wpamięcisurowejkażdybajtmajakąśniezdefiniowanąwartość(a).Zdefiniowaniezmiennej
poprzezzleceniekomputerowiwykonaniainstrukcjicharcrezerwujebajtpamięciwprzestrzeniad-
resowejkomputera.Zamiastposługiwaćsięadresami,korzystamyzidentyfikatoraobiektu,c(b).Ponie-
ważzmiennacniezostałazainicjalizowana,możesięwniejznajdowaćdowolnawartość.Inicjalizacja
przypisujedozmiennejpewnąkonkretnąznanąwartość.Wnaszymprzypadkujestniąkoddlalitery
IZ’
,tj.wartość0x5Awreprezentacjiszesnastkowej(c)
Należytutajpodkreślić,żechoćmożliwejestutworzenieiskompilowanieniezainicja-
lizowanejzmiennej,przykładowo
charc;
//Unikajniezainicjalizowanychobiektów!
takiobiektmożezawieraćdowolnąwartość,jakaakuratznajdowałasięwtymmiejscu
wpamięci!Możetoprowadzićdopowstaniapoważnychbłędów,którebędątrudnedo