C++标准提到reinterpret_cast
是定义执行,并没有给出任何保证不同的是浇铸背面(使用reinterpret_cast
)到原始类型将导致传递给第一原始值。reinterpret_cast和c-style cast是否兼容(通过C++标准)?
至少某些类型的C风格转型的行为方式非常相似 - 使用相同的值来回转换结果 - 目前我正在使用枚举和int
s,但也有一些其他示例。
虽然C++标准给出了两个铸风格的定义,它也给混合管型相同的质量保证?如果库X从函数int Y()
中返回一些enum
的值,可以使用上述任何一种类型,而不必担心在Y的身体中将初始enum
转换为int
的投射是什么?我没有X的源代码,所以我无法检查(无论如何,它可能会随着下一个版本发生变化),文档中几乎没有提到类似的东西。
我知道,在在这样的情况下,两个大多数实现投射相同的行为;我的问题是:C++标准对这种情况有什么看法 - 如果有的话。
Ç铸造来回并不总是导致相同的值...'(浮动)((INT)3.141)'不会给我'3.141 '回来。 – Xymostech
您可以使用'static_cast'在ints和enums之间进行转换。 –
@Xymostech我的意思是只有在C风格演员下才能正常工作的类型。我知道在某些情况下C风格的铸造会改变数值,但对于这些情况,整个问题都是没有意义的。 –