2014-03-02 35 views
-2

到目前为止,我只能找到C++编译器支持的转换类型,这些转换类型是用户定义类型为基本类型,基本类型为用户定义类型和一个用户定义类型键入另一个用户定义的类型。我的问题是C++编译器无法处理的转换类型是什么。编译器不支持的转换类型

+0

您有支持的转换列表。不支持的转换与此相反。另请参阅C++规范。如果你想要一个更具体的答案,它将取决于你正在使用的编译器以及你正在编译的C++的风格。 – tenfour

+1

你能举个例子吗?不知道问题是什么。 –

+0

“C++编译器未处理的转换类型是什么?”答:任何不在C++标准中的。例如,将类类型转换为物理对象。 – tenfour

回答

0

您可能意指在编译时未检查哪种转换。

reinterpret_cast转换发生在运行时,这就是为什么他们是危险的,可能你的程序崩溃:

struct CustomClass {}; 

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

相反,编译器会不会让你一个CustomClass转换为intstatic_cast

struct CustomClass {}; 

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