reinterpret_cast
Allows any pointer to be converted into any other pointer type.
reinterpret_cast < type-id > ( expression )
// Returns a hash code based on an address unsigned short Hash( void *p ) { unsigned int val = reinterpret_cast<unsigned int>( p ); return ( unsigned short )( val ^ (val >> 16)); }
和C风格的强制转换的效果是一样的
double a = 0.4;
int b = (int)a;
int b = reinterpret_cast<int>(a);
效果是一样的
static_cast是最普通的转换,比如:int转换成double。
const_cast最普通的用途就是转换掉对象的const属性,详见第21条款。
dynamic_cast把指向基类的指针或引用转换成其派生类或兄弟类的指针或引用,详见第39条款。
reinterpret_cast最普通的用途就是在函数类型指针之间进行转换。