Różnice w sposobach rzutowania
Ostatnio zmodyfikowano 2017-08-11 17:33
Lich555 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? srand( static_cast < unsigned >( time( NULL ) ) );
a tym: srand(( unsigned )( time( NULL ) ) );
|
|
jankowalski25 |
» 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. |
|
mokrowski |
» 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. |
|
Elaine |
» 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. |
|
mokrowski |
» 2017-08-11 15:26:39 Oczywiście masz rację... poprawione na reinterpret_cast co jest zgodne z działaniem. Moja pomyłka. |
|
Elaine |
» 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? |
|
mokrowski |
» 2017-08-11 17:33:10 Tak. Zapłaciło więcej..;) Ale za mało na 4 razy;) |
|
« 1 » |