![](/img/trans.png)
[英]Conversion requires reinterpret_cast, C-style cast or function-style cast
[英]Is a C-style cast identical to a function-style cast?
從這個答案回答 “何時應該使用static_cast,dynamic_cast,const_cast和reinterpret_cast?”:
C風格的強制轉換和函數風格的強制轉換分別是使用
(type)object
或type(object)
強制轉換。
然后它開始列出C樣式轉換的行為,但從不告訴函數樣式轉換是否相同。
我問,因為Resharper for C ++在C風格的演員陣容中警告我,但在功能風格的演員陣容中並沒有警告我:
功能風格的案例與C風格的演員有什么不同? 或者,如果它們是相同的,它是Resharper中的一個錯誤,它也會發出警告嗎? int(d)
安全使用? 它看起來比建議的static_cast<int>(d);
簡單得多static_cast<int>(d);
。
我沒有標准的引用,但是cppreference通常足夠好。
函數強制轉換表達式由簡單的類型說明符或typedef說明符組成(換句話說,單字類型名稱:
unsigned int(expression)
或int*(expression)
無效),后跟括號中的單個表達式。 此強制轉換表達式與相應的C樣式強制轉換表達式完全等效。
對於Resharper來說, C ++強制轉換包含一個功能強制轉換是可能的,因為它只在C ++中有效。
您在問題中鏈接的答案解釋了功能演員的安全性。 在你的情況下, int(d)
應該等同於static_cast<int>(d)
。 但一般來說,C風格或功能轉換是不安全的,因為它們在某些情況下可能等同於reinterpret_cast
,例如(double*)some_int_ptr
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.