Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Zwięzłewyrażanieideiiponownewykorzystaniekodu
DobrzenapisanykodwjęzykuC++jestprzejrzystyizwięzły.Spójrz,jak
wyglądaewolucjazjęzykaANSI-CdonowoczesnegoC++wprzypadku
następującejprostejoperacji:przetwarzaniewpętlitablicyvposiadającej
nelementów.Odpowiednikodpokazanonalistingu16.
#include<cstddef>
intmain(){
constsize–tn{100};
intv[n];
//ANSI-C
size–ti;
for(i:0;i<n;i++)v[i]:0;
//C99
for(size–ti:0;i<n;i++)v[i]:0;
//C++17
for(auto&x:v)x:0;3
}
Listing16.Programilustrującykilkasposobówiterowaniapotablicy
Napowyższymfragmenciekoduwidzimyróżnesposobydeklarowania
pętliwjęzykachANSI-C,C99iC++.Zmiennaindeksującaiwwersjach
ANSI-CiC99zostałapodporządkowanatemu,copróbujeszosiągnąć,
amianowicieuzyskiwaniudostępudokażdegoelementutablicyv.Wersja
C++3wykorzystujepętlęopartąnazakresie,którapoprostuprzetwarza
wszystkiewartościtablicyv,jednocześnieukrywającszczegółydotycząceme-
todyiteracji.PodobniejakwieleinnychdarmowychabstrakcjiwjęzykuC++,
równieżtakonstrukcjapozwalaskoncentrowaćsięnaznaczeniukodu,anie
najegoskładni.Pętleforopartenazakresiedziałajązwielomatypami.Mo-
żesznawetsprawić,abydziałałyztypamizdefiniowanymiprzezużytkownika.
Jeślijużwspominamyotypachzdefiniowanychprzezużytkownika,po-
winniśmyzauważyć,żepozwalająonewyrażaćideebezpośredniowkodzie.
Załóżmy,żechceszzaprojektowaćfunkcjęnavigate–to,któranakazujehipo-
tetycznemurobotowi,abyprzemieściłsiędojakiejśpozycjiowspółrzędnych
xiy.Weźpoduwagęnastępującyprototypfunkcji:
voidnavigate_to(doublex,doubley);
Czymzmiennexiy?Jakichjednostekmiarużywają?Abysiędowie-
dzieć,należysięzapoznaćzdokumentacją(lubewentualniekodamiźródło-
wymi).Aotonastępującyulepszonyprototyp:
structPosition{
--cięcie--
};
voidnavigate–to(constPosition&p);
xlviiiWstępdlaprogramistówC