Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
znakipolewejstronieoperatoraprzypisania.Jeślijednakpominieszznak*
wwyrażeniu*a–ptr,kompilatorstwierdzi,żepróbujeszprzypisaćintdotypu
wskaźnikowegoiwyświetliodpowiednibłąd.
Referencjejedyniewskaźnikamizawierającymidodatkoweśrodki
ostrożnościiodrobinęfilukru”syntaktycznego.Umieszczającreferencjępo
lewejstronieznakuprzypisania,ustawiaszwskazywanązmiennąnawartość
jegoprawejstrony.
Inicjalizacjazużyciemsłowakluczowegoauto
JęzykCczęstowymagawielokrotnegopowtarzaniainformacjiotypie.WC++
możesztylkorazprzekazaćinformacjęotypiezmiennej,używającwtymcelu
słowakluczowegoauto.Kompilatorrozpoznatypzmiennej,ponieważbędzie
znałtypwartościużytejdojejzainicjalizowania.Rozważnastępująceinicjali-
zacjezmiennychC++:
intx:42;
autoy=42;
Zmiennexiytypuint.Możeszbyćzaskoczonytym,żekompilatorpo-
trafiwydedukowaćtypy,aleweźpoduwagę,że42jestliterałemliczbycałko-
witej.Wprzypadkuużyciasłowaautokompilatordedukujetypznajdującysię
poprawejstronieznakuprzypisania,anastępnieustawiatakisamtypzmien-
nej.Ponieważliterałliczbycałkowitejjesttypuint,kompilatorwywnioskuje,
żetypymusibyćrównieżint.Wtakprostymprzykładziejakpowyższyniewy-
dajesiętobyćznaczącąkorzyścią,aletrzebawziąćpoduwagęzainicjalizowa-
niezmiennejwartościązwracanąprzezfunkcję,jakpokazanonalistingu10.
#include<cstdlib>
structHolmesIV{
--cięcie--
};
HolmesIV*make–mike(intsense–of–humor){
--cięcie--
}
intmain(){
automike:make–mike(1000);
free(mike);
}
Listing10.Programtestowyinicjalizującyzmiennązapomocązwracanejwartościfunkcji
Programwykorzystującysłowokluczoweautojestłatwiejszydozrozu-
mieniaibardziejpodatnynarefaktoryzacjęniżwprzypadkujawnegodekla-
rowaniatypuzmiennej.Użyciesłowaautopodczasdeklarowaniazmiennej
uprościwprowadzaniemodyfikacjiwprogramie,jeślibędzieszchciałzmienić
typzwracanyprzezfunkcjęmake–mike.Zaletyużyciasłowakluczowegoauto
jeszczewiększewprzypadkubardziejzłożonychtypów,naprzykładdotyczą-
WstępdlaprogramistówC
xliii