Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Rozdział2NowoczesnyC++
initializer_list<int>initList{1,10};
MyVectorvectorC(initList);
cout<<vectorC.size()<<""<<vectorC[0]<<endl;
return0;
}
Kodwlistingu2-7zawierajawniezadeklarowanyobiekt
initializer_list
,któryzo-
stanieużytydoskonstruowaniawektora.Kodzlistingu2-6utworzyłtakiobiektnie-
jawnieprzykonstruowaniuwektorazapomocąinicjowaniaujednoliconego.Zwykle
niemapotrzebyjawnegotworzenialistinicjalizujących,jakwtymprzykładzie;trzeba
jednakmiećświadomość,cokompilatorwykonujewtle,gdypiszemykodzużyciem
inicjowaniaujednoliconego.
Przepis2-3.Używaniededukowaniatypu
Problem
Chcemynapisaćkodprzenośny,któryniebędziewymagałponoszeniawysokichkosz-
tówkonserwacjiprzyzmianachtypów.
Rozwiązanie
C++udostępniasłowokluczowe
auto
,któregomożnaużyć,abykompilatorspróbował
automatyczniewydedukowaćtypzmiennej.
Jaktodziała
KompilatoryC++98miałymożliwośćautomatycznegodedukowaniatypuzmiennej.
Jednakfunkcjonalnośćtabyładostępnajedyniewówczas,gdypisaliśmykodwykorzy-
stującyszablonyipominęliśmyspecyfikacjętypu.WnowoczesnymC++todedukowa-
nietypuzostałorozszerzonenaznaczniewięcejscenariuszy.Kodwlistingu2-8pokazuje
użyciesłowakluczowego
auto
imetody
typeid
wcelurozpoznaniatypuzmiennej.
33