Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

" static_cast<> " a zwykłe rzutowanie

Ostatnio zmodyfikowano 2014-09-10 15:56
Autor Wiadomość
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:
C/C++
std::cout << "test1: " << static_cast < float >( liczba ) / static_cast < float >( liczba2 ) << std::endl;

a kodem 2:
C/C++
std::cout << "test2: " <<( float ) liczba /( float ) liczba2 << std::endl;
?


, gdzie    int liczba = 5, liczba2 = 2;
P-116817
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.
P-116818
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)
P-116821
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ę)
P-116824
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.
P-116829
pekfos
» 2014-09-10 15:44:14
zawsze działa i robi tak jakby twarde rzutowanie. Może przerzutować cokolwiek na cokolwiek
Nieprawda.
P-116835
michal11
» 2014-09-10 15:51:13
Czy mógłbyś zatem wyjaśnić kiedy nie dział ?
P-116836
pekfos
» 2014-09-10 15:56:15
kiedy nie dział ?
Np w tym przypadku:
C/C++
struct A { };
struct B { };

A a;
B b =( B ) a;
P-116837
« 1 »
  Strona 1 z 1