一些重新解释演员转换的结果
从一个函数指针类型到另一个函数指针类型的 reinterpret_cast
或者另一个函数引用类型的结果未指定。例:
int f();
auto fp = reinterpret_cast<int(*)(int)>(&f); // fp has unspecified value
Version <= C++ 03
从一个对象指针类型到另一个对象指针类型或者一个对象引用类型到另一个对象引用类型的 reinterpret_cast
的结果是未指定的。例:
int x = 42;
char* p = reinterpret_cast<char*>(&x); // p has unspecified value
但是,对于大多数编译器,这相当于 static_cast<char*>(static_cast<void*>(&x))
,因此结果指针 p
指向 x
的第一个字节。这是 C++ 11 中的标准行为。有关详细信息,请参阅类型双关语转换 。