node125






19.2 Konwersje jawne


























Dalej: 20. Dziedziczenie i polimorfizm
W górę: 19. Jeszcze o konwersjach
Wstecz: 19.1 Konwersje od i do




Podrozdziały


19.2.1 Konwersje uzmienniające
19.2.2 Konwersje statyczne
19.2.3 Konwersje dynamiczne
19.2.4 Konwersje wymuszane






19.2 Konwersje jawne



W czystym C, tak jak w Javie,
możemy zażądać jawnie konwersji
od wartości jednego typu do wartości innego typu za pomocą
rzutowania.
Ma ono postać
(Typ) wyrazenie

gdzie
Typ jest nazwą typu, a 
wyrazenie jest wyrażeniem
o p-wartości innego typu. Wynikiem jest p-wartość typu
Typ,
reprezentująca wartość wyrażenia
wyrazenie.
W Javie tego typu rzutowania są bezpieczne: albo na etapie
kompilacji, albo, jeśli to niemożliwe, na etapie wykonania
zostanie sprawdzone, czy takie rzutowanie ma sens. W C taka forma
rzutowania jest mniej bezpieczna; będzie ono wykonane „siłowo'',
czasem zupełnie bezsensownie. Dlatego lepiej jest używać nowych
operatorów, wprowadzonych w C++, które wykonują te konwersje
w sposób bardziej kontrolowany. Wszystkie one mają postać
rodzaj_cast<Typ>(wyrazenie)

gdzie zamiast '
rodzaj' należy wstawić
static,

dynamic,
const lub
reinterpret. Wynikiem
będzie p-wartość typu
Typ utworzona na podstawie wartości
wyrażenia
wyrazenie.





19.2.1 Konwersje uzmienniające



Konwersja uzmienniająca



ma postać
const_cast<Typ>(wyrazenie)

Wyrażenie
wyrazenie musi tu być tego samego typu
co
Typ, tylko z modyfikatorem
const lub
volatile.
A zatem tego rodzaju konwersja usuwa „ustaloność'' (lub
„ulotność'') i może służyć tylko do tego celu. Z drugiej
strony, tego samego efektu nie można uzyskać za pomocą
konwersji przy użyciu
static_cast,
dynamic_cast lub

reinterpret_cast: kompilator uznałby taką konwersję

const Typ


Typ za nielegalną.
Rozpatrzmy przykład:



Wyszukiwarka

Podobne podstrony:
node12
node127
node126
node121
node126
node129
node126 EAT2FBA72AHUMICANGCYU4DWVTTCBUBOOFOV5DI
node128
node124
node127
node128
node126
node124
node12 5RJIDD32YMXJNTH7EYXB4KIBTOGGXXKPFHRU6VA
node120
node128

więcej podobnych podstron