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風格的鑄造會改變數值,但對於這些情況,整個問題都是沒有意義的。 –