Narzut związany z użyciem reinterpret_cast
Ostatnio zmodyfikowano 2014-08-14 21:14
Maciek Temat założony przez niniejszego użytkownika |
Narzut związany z użyciem reinterpret_cast » 2014-08-14 12:15:30 Dzień Dobry. Czy ktoś wie dokładnie czy jest jakiś narzut związany z użyciem rzutowania za pomocą reinterpret_cast ? Bo moim zdaniem być nie powinno, bo to przecież nie jest rzutowanie w czasie wykonania tak jak dynamic_cast. Ale oczywiście mogę się mylić. Dzięki za dobre rady. |
|
Monika90 |
» 2014-08-14 13:35:42 A co chcesz rzutować? Np. rzutowanie 32 bitowego wskaźnika na 64 bitowy typ całkowitoliczbowy może wymagać operacji takiej jak sign extension albo zero extension, koszt tego jest znikomy. |
|
DejaVu |
» 2014-08-14 16:04:13 Wydaje mi sie, ze jego intencja jest rzutowanie wskaznikow wiedzac, ze rzutowanie w gore jest bePieczne. |
|
Maciek Temat założony przez niniejszego użytkownika |
» 2014-08-14 16:17:48 Chcę rzutować wskaźnik z typu bazowego do typu pochodnego, żeby skorzystać z funkcji, która w klasie bazowej nie jest dostępna. |
|
DejaVu |
» 2014-08-14 17:44:30 W tym przypadku nie ma żadnego narzutu. Z punktu widzenia instrukcji procesora wskaźnik jest po prostu liczbą, która nic dla niego nie znaczy. Procesor nie wie i nie potrafi rozróżnić typu danych na jakie wskazuje wskaźnik. |
|
Monika90 |
» 2014-08-14 18:17:55 Chcę rzutować wskaźnik z typu bazowego do typu pochodnego |
A skąd wiesz, że ten wskaźnik faktycznie wskazuje na obiekt klasy pochodnej? Do takich rzutowań służy static_cast. Najlepiej jednak przeprojektuj program. |
|
DejaVu |
» 2014-08-14 19:14:55 Moze miec enuma na podstawie ktorego wie, ze moze rzutowac w gore :) wydaje mi sie ze static cast nie zadziala tu i musi byc reinterpret cast lub rzutowanie brzydkie czyli w stylu C |
|
Monika90 |
» 2014-08-14 20:39:48 Tu musi być static_cast, static_cast potrafi skorygować wskaźnik w przypadku dziedziczenia wielokrotnego, reinterpret_cast tego nie robi. |
|
« 1 » 2 |