我來自C++,只知道一些Java,但有一點我不完全瞭解java是鑄造。在C++中,我們有Regular cast vs. static_cast vs. dynamic_cast。在java中,我們在原始類型和對象類型(稱爲裝箱和拆箱)之間進行投射,在原始類型之間進行投射,使用Class
函數進行投射,有時我們執行未檢查的投射。是否有從Java的投射系統到C++的投射系統的直接映射?他們是否等同?或者在某一方面有獨特的東西嗎?Java的鑄造和C++的鑄造
0
A
回答
1
如果您瞭解C++,則可以相當容易地解釋Java對象模型。類類型的Java變量是引用以動態創建相應類型的對象。一個初始化的Java變量T x = new T();
緊密對應於一個C++指針:T * px = new T;
在Java中,所有類類型的多態型Object
繼承,因此,所有的指針可用於RTTI:Java類類型的變量的所有類型轉換是什麼dynamic_cast
是用C++編寫的。因此Java的(S) x
對應於C++中的dynamic_cast<S *>(px)
,具有相同的失敗模式,即空結果表示動態類型不相關。
所有其他C++指針轉換都是不安全的,並且在Java中沒有等價物。我不知道Java是否具有整數到浮點的標量轉換;如果是這樣,那麼這些將與C++轉換密切對應。
拳擊和原始類型是一個相當獨立和不相關的問題。如果你想在C++中使用類似的東西,你會得到某種類型的template <typename T> struct Box
,並將其轉換爲。
1
簡而言之:
想想從鑄件內置類型爲的static_cast的和
想想對象之間的強制類型轉換爲dynamic_cast的在C++。
相關問題
- 1. 在Java中的類型鑄造/鑄造
- 2. C++鑄造運營商和傳統的C鑄造運營商
- 3. 鑄造在Java
- 4. C++類鑄造
- 5. C#鑄造
- 6. 鑄造在C#
- 7. Java泛型和鑄造
- 8. 對象和鑄造java
- 9. Java通用鑄造
- 10. Java鑄造對象
- 11. 在Java中鑄造
- 12. java - 鑄造泛型
- 13. Android Java類鑄造
- 14. Java變量鑄造
- 15. Java鑄造轉換?
- 16. Java鑄造陣列
- 17. Java對象鑄造
- 18. Java - 鑄造一套
- 19. Java鑄造(動態)
- 20. Java類型鑄造
- 21. C#鑄造和繼承
- 22. 鑄造和反射C#
- 23. 鑄造 - 的foreach - java的
- 24. C型鑄造和功能鑄造之間有什麼區別?
- 25. 鑄造
- 26. 鑄造
- 27. 鑄造C++問題
- 28. C#泛型鑄造
- 29. C:鑄造警告
- 30. C#鑄造問題
什麼是「常規演員」? –
@KerrekSB:我提供的鏈接解釋了它。 – keelar
我不會考慮裝箱,因爲它會創建新的實例。這只是一個編譯器的便利,可以用來完成「新的Integer(myInt)」等等。 – SJuan76