" static_cast<> " a zwykłe rzutowanie
Ostatnio zmodyfikowano 2014-09-10 15:56
fokusx Temat założony przez niniejszego użytkownika |
" static_cast<> " a zwykłe rzutowanie » 2014-09-09 20:14:50 Może ktoś mi wyjaśnić jaka jest różnica pomiędzy kodem 1: std::cout << "test1: " << static_cast < float >( liczba ) / static_cast < float >( liczba2 ) << std::endl;
a kodem 2: std::cout << "test2: " <<( float ) liczba /( float ) liczba2 << std::endl;
? , gdzie int liczba = 5, liczba2 = 2; |
|
Monika90 |
» 2014-09-09 20:34:58 To co nazywasz zwykłym rzutowaniem, to jest przestarzałe i niebezpieczne rzutowanie pochodzące z jezyka C. W C++ używa się static_cast, const_cast albo reinterpret_cast zależnie od sytuacji.
Jeżeli się nie mylę, to w tych sytuacjach w kórych działa i static_cast, i rzutowanie w stylu C, to obydwa mają ten sam efekt.
|
|
fokusx Temat założony przez niniejszego użytkownika |
» 2014-09-09 20:55:25 Dobra, to doczytam jeszcze czym dokładnie różnią się te 3 funkcje i będę je używał.
(temat zostawię jeszcze otwarty, jakby ktoś chciał coś dodać, zamknę go później) |
|
1aam2am1 |
» 2014-09-09 21:42:02 rzutowanie w stylu C nie zawsze działa, (wydaje mi się że jest to wywołanie konstruktora, ale się niekłucę) |
|
michal11 |
» 2014-09-10 09:14:32 Właśnie o to chodzi, że zawsze działa i robi tak jakby twarde rzutowanie. Może przerzutować cokolwiek na cokolwiek i dodatkowo jest dość trudno wykrywalne. |
|
pekfos |
» 2014-09-10 15:44:14 zawsze działa i robi tak jakby twarde rzutowanie. Może przerzutować cokolwiek na cokolwiek |
Nieprawda. |
|
michal11 |
» 2014-09-10 15:51:13 Czy mógłbyś zatem wyjaśnić kiedy nie dział ? |
|
pekfos |
» 2014-09-10 15:56:15 Np w tym przypadku: struct A { }; struct B { };
A a; B b =( B ) a;
|
|
« 1 » |