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
PodczasdeklarowaniafunkcjiaddniemusiszznaćtypuT.Powinieneś
tylkowiedzieć,żewszystkieargumentyiwartośćzwracanatypuT,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.Tespecjalnefunkcjemetodaminależącymi
dotypówzdefiniowanychprzezużytkownika.Typyzdefiniowaneprzezużytkowni-
kapodstawowymielementamiskładowymiaplikacjiC++.Możeszjetrak-
towaćjakostruktury,któremogąrównieżzawieraćfunkcje.
Konstruktorobiektujestwywoływanyzarazporozpoczęciujegookresu
przechowywania,adestruktorjestwywoływanytużprzedjegozakończeniem.
Zarównokonstruktor,jakidestruktorfunkcjamibeztypuzwracane-
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