编译器不支持的转换类型

时间:2014-03-02 11:31:09

标签: c++

到目前为止,我只能找到C ++编译器支持的转换类型,它们是基本类型的用户定义类型,基本类型到用户定义类型,以及一个用户定义类型到另一个用户定义类型。我的问题是C ++编译器没有处理什么类型的转换。

1 个答案:

答案 0 :(得分:0)

您可能意味着在编译时不会检查哪种转换。

reinterpret_cast次转化发生在运行时,这就是为什么它们很危险并可能导致程序崩溃的原因:

struct CustomClass {};

int main()
{
    CustomClass c = {};
    int x = 0;
    x = *(reinterpret_cast<int *>(&c)); // undefined behaviour, may e.g. crash
}

相反,编译器不允许您使用CustomClassint转换为static_cast

struct CustomClass {};

int main()
{
    CustomClass c = {};
    int x = 0;
    x = static_cast<int>(c); // compiler error
}