В чем разница между 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); не будет компилироваться.