Rzutowanie

Zandalor

Zamiana danych jednego typu na inny.
W C++ istnieją 4 operatory rzutowania i jeden sposób z czasów języka C (niezalecany)

Operatory rzutowania w C++

Aliasy rzutowania

Operatory rzutowania w C++ wydają się być zbyt długie. Można je skrócić używając preprocesora bądź lepiej - szablonu.

//Rzutowanie static_cast

//preprocesor
#define SCAST static_cast

//szablon
template<class OUT, class IN> OUT sCast(IN val)
{
    return static_cast<OUT>(val);
}

/* ... */
int a = -8;
unsigned b = SCAST<unsigned>(a);
/* lub */
unsigned b = sCast<unsigned>(a);

Rzutowanie w stylu C

(<font color="blue">type</span>) (data)
<font color="blue">type</span> (data)
(<font color="blue">type</span>) data

<font color="blue">type</span> - typ danych na, który rzutujemy
data - dane do rzutowania

Wady rzutowania w stylu C

-powstają błędy trudne do zlokalizowania,
-powstaje duże nagromadzenie nawiasów.

3 komentarzy

W Operatorach rzutowania źle wyświetla się gwiazdka

"To jest wywołanie konstruktora"
Też o tym słyszałem.

Jeśli type(expr) to rzutowanie w stylu C to ja jestem zającem... To jest wywołanie konstruktora, nieuku.