我来自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