C 顯式型別轉換

2021-06-18 17:02:08 字數 602 閱讀 3670

對於型別轉換,我在查資料的時候看到了一種很有意思的解釋,我們可以這樣理解型別轉換:

某塊記憶體中的資料是不變的,而型別就是我們戴上的眼鏡,當我們戴上一種眼鏡後,我們就會用對應的型別來解釋記憶體中的資料,這樣不同的解釋就得到了不同的資訊。

所謂強制型別轉換實際上就是換上另一副眼鏡後再來看同樣的那塊記憶體資料。

c++中有以下四種顯式型別轉換:

const_cast用來去掉const屬性,四種型別轉換中只有它可以做到

static_cast就是靜態型別轉換,靜態型別包括一般型別,靜態型別的記憶體分配在棧上。它沒有在執行時檢查來確保這項轉化是安全的轉化,當遇到有歧義的指標時,dynamic_cast會失敗,而static_cast將返回,好像沒有任何錯誤一樣。這是非常危險的。

dynamic_cast,命名上理解是動態型別轉換,如子類和父類之間的多型型別轉換。dynamic_cast是安全的,但是它僅適用於指標和引用,並且執行時檢查是乙個負擔。

reinterpret_cast的意思是重新解釋

型別,但沒有進行二進位制的轉換。它的實際動作及結果可能取決於編譯器,因此意味著它不可移植

。4種型別轉換的格式,如:type b = static_cast(a)。

c 顯式型別轉換

乙個命名的強制型別轉換具有以下形式 cast name expression 其中,type是轉換的目標型別,而expression是要轉換的值。如果type是引用型別,則結果是左值。cast name是static cast dynamic cast const cast reinterpret ...

C 顯式型別轉換

c 的隱式型別轉換不在此文章講述範圍。c 的顯式型別轉換有 4 種 static cast dynamic cast const cast reinterpret cast。語法 cast name expression type 是轉換的目標型別,expression 是要轉換的值。cast na...

C 的顯式型別轉換

c 的顯式型別轉換 顯式型別轉換意味著告訴編譯器 別管我,我已確定要這麼做!編譯器就會相信你,不再做任何其他檢查。所以要小心使用轉換。強制型別轉換容易引發錯誤,所以被認為是一種醜陋的語法。c 中有乙個觀念 醜陋的語法就應該用醜陋的方式表達。所以,c 的轉換操作符使用 x cast 這種一種繁瑣的形式...