C++ 类型转换
示例
可以使用reinterpret_cast将指向对象类型的指针(重新引用)转换为指向任何其他对象类型的指针(重新引用)。这不会调用任何构造函数或转换函数。
int x = 42; char* p = static_cast<char*>(&x); // 错误:static_cast无法执行此转换 char* p = reinterpret_cast<char*>(&x); // OK *p = 'z'; // 也许这会修改x(请参见下文)
只要该地址针对目标类型进行了适当对齐,则reinterpret_cast的结果表示与操作数相同的地址。否则,结果不确定。
int x = 42; char& r = reinterpret_cast<char&>(x); const void* px = &x; const void* pr = &r; assert(px == pr); // 永不触发