Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
autoc=add(1.F,2.F,3.F);//cjesttypufloat
}
Listing20.Użycieszablonówwceluutworzeniaogólnejfunkcjidodawania
Podczasdeklarowaniafunkcjiadd❶niemusiszznaćtypuT.Powinieneś
tylkowiedzieć,żewszystkieargumentyiwartośćzwracanasątypuT,aobiekty
tegotypumożnadodawać.Gdykompilatornapotkawywołanieadd,wydedu-
kujetypTiwygenerujefunkcjęzgodniezTwoimżyczeniem.Toznaczący
przypadekponownegoużyciakodu!
Niezmiennikiklasizarządzaniezasobami
Byćmożenajwiększąindywidualnąinnowacją,jakąjęzykC++wprowadził
doprogramowaniasystemowego,byłcyklżyciaobiektu.Takoncepcjamaswoje
korzeniejeszczewjęzykuC,wktórymobiektymająróżneokresyprzechowy-
waniawzależnościodtego,jakzostanązadeklarowanewkodzie.
JęzykC++wykorzystujetenmodelzarządzaniapamięciąwprzypadku
konstruktorówidestruktorów.Tespecjalnefunkcjesąmetodaminależącymi
dotypówzdefiniowanychprzezużytkownika.Typyzdefiniowaneprzezużytkowni-
kasąpodstawowymielementamiskładowymiaplikacjiC++.Możeszjetrak-
towaćjakostruktury,któremogąrównieżzawieraćfunkcje.
Konstruktorobiektujestwywoływanyzarazporozpoczęciujegookresu
przechowywania,adestruktorjestwywoływanytużprzedjegozakończeniem.
Zarównokonstruktor,jakidestruktorsąfunkcjamibeztypuzwracane-
goimajątakąsamąnazwęjakklasa,doktórejnależą.Abyzadeklarować
destruktor,należyprzednazwąklasydodaćznaktyldy(~),jakpokazano
nalistingu21.
#include<cstdio>
structHal{
Hal():version{9000}{//Konstruktor❶
printf("Iimcompletelyoperational.\n");
}
~Hal(){//Destruktor❷
printf("Stop,Dave.\n");
}
constintversion;
};
Listing21.KlasaHalzawierającakonstruktoridestruktor
PierwsząmetodąwklasieHaljestkonstruktor❶.Konfigurujeonobiekt
Haliustanawianiezmiennikiklasy(classinvariants).Niezmiennikitocechykla-
sy,któreniezmieniająsiępoichutworzeniu.Zpewnąpomocąkompilatora
iśrodowiskawykonawczegoprogramistadecyduje,jakiemająbyćniezmien-
nikiklasy,isprawia,żejegokodjeegzekwuje.Wtymprzypadkukonstruktor
przypisujewartość9000poluversion,którejestniezmiennikiem.Destruktorjest
drugąmetodą❷.IlekroćpamięćobiektuHalmazostaćzwolniona,destruktor
WstępdlaprogramistówC
liii