Какой вид броска от Типа* для освобождения*?

В C++ для любого типа данных я могу сделать следующее:

Type* typedPointer = obtain();
void* voidPointer = typedPointer;

какой бросок выполняется, когда я присваиваюсь Type* кому: void*? Это то же как

Type* typedPointer = obtain();
void* voidPointer = reinterpret_cast<void*>( typedPointer );

или это - некоторый другой бросок?

5
задан sharptooth 4 February 2010 в 08:31
поделиться

4 ответа

Это стандартное преобразование указателя. Поскольку это стандартное преобразование, оно не требует явного приведения.

Если вы хотите воспроизвести поведение этого преобразования с явным приведением, это будет static_cast , а не reinterpret_cast .

В соответствии с определением static_cast , данным в 5.2.9 / 2, static_cast может выполнять все преобразования, которые могут выполняться неявно.

4
ответ дан 18 December 2019 в 13:13
поделиться
  • Блокировки чтения/записи . Вместо того, чтобы реплицировать тот же фрагмент, я использовал аспект, чтобы определить методы, которые нуждались в блокировке чтения или эксклюзивной блокировке.
-121--1054923-

Как выглядят модульные тесты?

Облегчает ли конструкция написание требуемых тестов?

-121--2970314-

Это не приведение, это неявное преобразование. Слепки являются явными по определению. Это не более чем актерский состав, чем

char c = 'a';
int i = c;

.

4
ответ дан 18 December 2019 в 13:13
поделиться

Это один и тот же гипс. Любой указатель может быть приведен к указателю на пустоту.

2
ответ дан 18 December 2019 в 13:13
поделиться

Доступно неявное преобразование из Тип * в void * . Вы можете использовать static_cast , чтобы прояснить цель кода. Для реверса требуется reinterpret_cast

РЕДАКТИРОВАТЬ : согласно комментарию для реверса также можно использовать static_cast . Пробовал образец кода, и он действительно компилируется. Не знал этого и всегда использовал reinterpret_cast для преобразования из пустоты *.

4
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: