Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
cychszablonówbibliotekistdlib.Wtakichsytuacjachkompilatorwykonuje
zaciebiewszystkieczynnościzwiązanezdedukcjątypów.
Uwaga
Słowoautomożesztakżeuzupełniaćokwalifikatoryconst,volatile,&oraz*.
Przestrzenienazwiniejawneużyciesłowatypedefztypamistruct,unionienum
C++niejawnieuzupełniaoznaczeniatypówosłowotypedef.JeśliwjęzykuC
chceszużyćstruktury,uniilubtypuwyliczeniowego,musiszprzypisaćnazwę
doutworzonegotypuzapomocąsłowakluczowegotypedef.Naprzykład:
typedefstructJabberwocks{
void*tulgey_wood;
intis–galumphing;
}Jabberwock;
PiszącprogramywjęzykuC++,wyśmiewaszsięztakiegokodu.Ponieważ
słowokluczowetypedefmożezostaćużyteniejawnie,C++pozwalazadeklaro-
waćtypJabberwockwnastępującysposób:
structJabberwock{
void*tulgey_wood;
intis–galumphing;
};
Takizapisjestwygodniejszyipozwalazaoszczędzićtrochęmiejsca.Cosię
jednakstanie,jeślibędzieszchciałzdefiniowaćrównieżfunkcjęonazwieJab-
berwock?Cóż,niepowinieneśtegorobić,ponieważponowneużycietejsamej
nazwydlatypudanychifunkcjimożespowodowaćpewnezamieszanie.Jeśli
naprawdęjesteśzdeterminowany,wiedzotym,żejęzykC++pozwalazade-
klarowaćprzestrzeńnazw(namespace),abytworzyćróżnezakresydlaidenty-
fikatorów.Dziękitemumożnawprzypadkutypówifunkcjizdefiniowanych
przezużytkownikówzadbaćoporządek,jakpokazanonalistingu11.
#include<cstdio>
namespaceCreature{
structJabberwock{
void*tulgey_wood;
intis–galumphing;
};
}
namespaceFunc{
voidJabberwock(){
printf("Burble!");
}
}
Listing11.Użycieprzestrzeninazwwceluujednoznacznieniafunkcjiitypów
oidentycznychnazwach
xlivWstępdlaprogramistówC