reinterpret_cast(char *) против static_cast(static_cast(char *)) - что использовать? - PullRequest
4 голосов
/ 22 октября 2011

Когда вы динамически выделяете буфер типа char * и хотите привести его к определенному типу, следует ли использовать что-то вроде

reinterpret_cast<int *>(char *)

или что-то вроде

static_cast<int *>(static_cast<void *>(char *))

и почему?

Я лично испытываю желание использовать последнее, потому что для меня это на самом деле не «реинтерпретация» данных (скорее просто механический способ распределения буфера), и это не так.Не похоже, что это будет источником ошибок так же, как типичный reinterpret_cast, но разве это правильная интуиция?

1 Ответ

4 голосов
/ 08 декабря 2011

Согласно Дейву Абрахамсу , использование цепочек static_cast s - это правильный, стандартный способ приведения типов указателей.

Лично я использую reinterpret_cast в этих случаях, потому что мне никогда не приходится иметь дело с архитектурами, которые бы одно делали с цепочкой static_cast с, а другое - с одним reinterpret_cast.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...