PDA

View Full Version : reinterpret_cast



hi.alir
سه شنبه 29 اسفند 1391, 11:34 صبح
کد زیر رو در نظر بگیرید:


int i; // = some number
int *ip = &i;
float *fp = reinterpret_cast<float*>(ip);

این کد میاد ساختار بیتی اون int رو تغییر میده یا یه چیزی مثل کد زیر می مونه؟


int i; // = some number
int *ip = &i;
void *vp = ip;
float *fp = static_cast<float*>(vp);

rezaricky
چهارشنبه 30 اسفند 1391, 10:16 صبح
نه
کاری که reinterpet_cast انجام میده اینه که تضمین میکنه اگه اشاره گری رو به یک نوع دیگه cast کنی و بعد به نوع اولیه reinterpret_cast کنی ، مقدار درست رو نشون میده
int* a = new int();
void* b = reinterpret_cast<void*>(a);
int* c = reinterpret_cast<int*>(b);

برای cast از/به void* هم static_cast مناسب تر از همه است.