Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
24
10Wprowadzenie
wzakresiewejścieiwyjściadozdefiniowanychprzezużytkownikatypówwsposób
szybkiielegancki,awszystkotozapomocąprzeładowaniaoperatorów.
.Semantykaprzenoszenia-donajważniejszychcelówC++zawszenależaławydajność.
Dużaliczbaprzetwarzanychobiektówwpływananiąnegatywnie,zwłaszczajeślite
obiektydużeiintensywniekopiowane.Wwieluprzypadkachkopiowanieobiektów
niejestjednakkonieczne,ponieważdanemogąbyćprostoiefektywniepodmieniane.Za
wysoceefektywnąsemantykąprzenoszenia(ang.movesemantics),dostępnąwewspół-
czesnymC++,kryjesięwłaśniemechanizmpodmianydanych,copozwoliłorównież
podnieśćjakośćgenerowanegokodu.
.Wyrażenialambda-tenrelatywnienowysposóbzapisufunkcjiprzypominającychwy-
rażeniaznacznieudoskonaliłprocesprzekazywaniawyspecjalizowanychdziałańlub
cechdoalgorytmów.Wrazzesłowemkluczowymauto,wyrażenialambdapozwoliły
natworzeniebardziejeleganckiegokoduizwiększenieproduktywności.
.Inteligentnewskaźniki-choćinteligentnewskaźniki(ang.smartpointers)znajdująsię
wśróddziesiątekkonstrukcjiprogramistycznychdostępnychwbibliotecestandardowej
(ang.StandardLibrarywskrócieSL),zmieniłysposób,wjakiC++obchodzisięzza-
sobamisystemowymi.Przezlatawyciekipamięci(ang.memoryleaks),jakiemogłyby
złatwościąprzydarzyćsięwniedbalenapisanymkodzieClubC++,byłygłównym
zarzutempodnoszonymprzeciwkoC++wsystemach,wktórychistotnyjestwysoki
poziombezpieczeństwa,atakżewprzypadkuprogramowaniarozwiązańsieciowych
iinternetowych.Inteligentnewskaźnikiwsposóbrobiącywrażeniezmieniłytenobraz
-jeślibędziemyichkonsekwentnieużywać,mogązapobiegaćwyciekompamięcibez
potrzebystosowaniamechanizmówtakichjakodśmiecaczepamięci(ang.garbagecol-
lectors),którenegatywniewpływająnawydajnośćsystemu.
.Szablonyiprogramowaniegeneryczne-zauważono,żegdypowstajekodogromnych
rozmiarów,wielestrukturifunkcjisiępowtarza:układjestniemaltakisam,azmienia
sięjedyniekilkatypów.Szablonyłagodząproblempowtarzaniakodu,pozwalającnam
pisaćfunkcjeiklasy,wprzypadkuktórychkonkretnetypyiparametrymogąbyćróżne,
apodaćjetrzebatużprzedutworzenieminstancjitakiegokonstruktu.Ztegopowodu
kodstałsiębardziejgeneryczny,ponieważmożliwejestzakodowaniekomponentów,
któremogądziałaćzróżnymitypami-nawettymi,którenieznanewchwiliim-
plementacjikomponentu.Dobryprzykładstanowiklasastd::vectorzSL,reprezen-
tującadynamicznierosnącątablicęobiektów.Jestonawstanieprzechowywaćniemal
każdyobiekt,którymożezostaćautomatyczniezainicjalizowany.
.Biblioteki-bibliotekastandardowaposiadadziesiątkikontenerówdanych,algoryt-
mówipodbibliotekpowstałychzmyśląowyszukiwaniuzużyciemwyrażeńregular-
nych,programowaniurównoległym,systemieplikówipomiarzeczasu.Istniejąteż
innewysocewydajnebibliotekisłużącedoobliczeń,obróbkigrafiki,programowania
gier,przetwarzaniairozpoznawaniaobrazów,uczeniasięmaszynisztucznejinteli-
gencji(ang.MachineLearning&ArtificialIntelligencewskrócieML/AI),obróbki
dźwiękuitworzeniainnychprogramównarzędziowych.Dostępdotychzasobów
częstojestotwarty.
.Automatycznegenerowaniekoduprzezkompilator-jakrównieżtzw.metaprogramo-
wanie,stałosięmożliwedziękiniedawnopowstałemumechanizmowiwyrażeństałych