В чем разница между reinterpret_cast и актом C-стиля?

В чем разница между:

double x = 10.3;
int y;
y = (int) x;    // c-like cast notation

И:

double x = 10.3;
int y;
y = reinterpret_cast<int>(x)   

Ответ 1

Листинг C-стиля может быть любым из следующих типов приведений:

  • const_cast
  • static_cast
  • static_cast, за которым следует const_cast
  • reinterpret_cast
  • reinterpret_cast, за которым следует const_cast

первый из этого списка, который может быть выполнен, - это то, что будет выполняться приложением C-стиля (из С++ 03 5.4: "Явное преобразование типа (отличная нотация)"

Итак, для вашего примера:

double x = 10.3;
int y;
y = (int) x;

тип используемого приведения был бы static_cast.

И y = reinterpret_cast<int>(x); не будет компилироваться.