AVOID CASTS
C++提供了4种类型转换符:
dynamic_cast
A dynamic_cast supports the run-time idenfication of objects addressed either by a pointer or reference.
const_cast
A const_cast casts away the constness of its expression.
static_cast
Any type conversion that the compiler performs implicitly can be explicitly requested by using a static_cast.
double d = 97.0;
char ch = static_cast<char>(d);
A static_cast is also useful to perform a conversion that the compiler will not generate automately.
void *p = &d;
double *dp = static_cast<doubl*>(p);
reinterpret_cast
A reinterpret_cast generally performs a low_level reinterpretation of the bit pattern of its operands.
int *ip;
char *pc = reinterpret_cast<char*>(ip);
更详细具体的可以参考:
C++类型转换小结