到目前为止,我只能找到C ++编译器支持的转换类型,它们是基本类型的用户定义类型,基本类型到用户定义类型,以及一个用户定义类型到另一个用户定义类型。我的问题是C ++编译器没有处理什么类型的转换。
答案 0 :(得分:0)
您可能意味着在编译时不会检查哪种转换。
reinterpret_cast
次转化发生在运行时,这就是为什么它们很危险并可能导致程序崩溃的原因:
struct CustomClass {};
int main()
{
CustomClass c = {};
int x = 0;
x = *(reinterpret_cast<int *>(&c)); // undefined behaviour, may e.g. crash
}
相反,编译器不允许您使用CustomClass
将int
转换为static_cast
:
struct CustomClass {};
int main()
{
CustomClass c = {};
int x = 0;
x = static_cast<int>(c); // compiler error
}