Różnice w sposobach rzutowania
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Różnice w sposobach rzutowania

AutorWiadomość
Temat założony przez niniejszego użytkownika
Różnice w sposobach rzutowania
» 2017-08-11 12:15:16
Witam.
Czy jest jakaś różnica między tymi dwoma zapisami?
C/C++
srand( static_cast < unsigned >( time( NULL ) ) );
a tym:
C/C++
srand(( unsigned )( time( NULL ) ) );
P-163903
» 2017-08-11 12:34:29
Pierwszy zapis jest zalecany, ponieważ ułatwia znalezienie rzutowań w kodzie (które są miejscami potencjalnych błędów). Zwykle są do tego używane szablony i dzięki temu można utworzyć własne rzutowania
foo_cast
, które dodatkowo będą jeszcze coś robiły, w zależności od potrzeb (taki szablon można rozbudowywać tak, jak każdą inną klasę). Bodajże kiedyś Elaine zaimplementował
dynamic_cast
.

Drugi zapis to rzutowania w stylu C, które są niezalecane w C++, jednak zostały zachowane ze względu na zgodność wsteczną z C.
P-163904
» 2017-08-11 14:13:27
Rzutowanie w projekcie, zawsze jest oznaką pewnego kompromisu lub stosowania specjalnej techniki. Takie rzutowanie warto wykryć. Łatwym sposobem będzie wyodrębnienie czytelnego zapisu takiego rzutowania.
Poza tym rzutowanie poprzez szablon, jasno pokazuje intencję takiego rzutowania. Czy jest to konieczność rzutowania "w dół drzewa dziedziczenia", czy pozbycie się const z typu czy może bezpieczna konwersja typu (np. na typ szerszy).
Rzutowanie "w stylu C", jest nie jasną (co do intencji) kombinacją static_cast, const_cast oraz reinterpret_cast.
P-163905
» 2017-08-11 14:26:11
Rzutowanie "w stylu C", jest nie jasną (co do intencji) kombinacją static_cast, reinterpret_cast oraz dynamic_cast.
Rzutowanie w stylu C nigdy nie użyje dynamic_cast.
P-163907
» 2017-08-11 15:26:39
Oczywiście masz rację... poprawione na reinterpret_cast co jest zgodne z działaniem. Moja pomyłka.
P-163908
» 2017-08-11 15:54:50
Rzutowanie "w stylu C", jest nie jasną (co do intencji) kombinacją static_cast, reinterpret_cast oraz reinterpret_cast.
reinterpret_cast zapłaciło więcej, więc jest dwa razy?
P-163909
» 2017-08-11 17:33:10
Tak. Zapłaciło więcej..;) Ale za mało na 4 razy;)
P-163918
« 1 »
 Strona 1 z 1