簡體   English   中英

C風格的演員是否與功能風格的演員陣容相同?

[英]Is a C-style cast identical to a function-style cast?

這個答案回答 “何時應該使用static_cast,dynamic_cast,const_cast和reinterpret_cast?”:

C風格的強制轉換和函數風格的強制轉換分別是使用(type)objecttype(object)強制轉換。

然后它開始列出C樣式轉換的行為,但從不告訴函數樣式轉換是否相同。

我問,因為Resharper for C ++在C風格的演員陣容中警告我,但在功能風格的演員陣容中並沒有警告我:

Resharper截圖

功能風格的案例與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM