Java的演员和C ++的演员阵容

时间:2013-06-22 23:34:00

标签: java c++ casting

我来自C ++并且只知道一些Java,但有一件事我不完全了解java是铸造。在c ++中,我们有Regular cast vs. static_cast vs. dynamic_cast。在java中,我们在基本类型和对象类型之间进行转换(称为装箱和拆箱),在基本类型之间进行转换,使用Class函数进行转换,有时我们执行未经检查的转换。是否有从Java的演员系统到C ++的演员系统的直接映射?他们相同吗?或者有什么东西在一方是独一无二的吗?

2 个答案:

答案 0 :(得分:1)

如果您了解C ++,则可以非常轻松地解释Java对象模型。类类型的Java变量是 references ,以动态创建相应类型的对象。初始化的Java变量T x = new T();与C ++指针紧密对应:T * px = new T;

在Java中,所有类类型都继承自多态类型Object,因此所有指针都可用于RTTI:所有Java类类型变量的转换都是{C}中dynamic_cast的转换。所以Java的(S) x对应于C ++中的dynamic_cast<S *>(px),具有相同的失败模式,null结果表明动态类型不相关。

所有其他C ++指针强制转换都是不安全的,在Java中没有等价物。我不知道Java是否有像整数到浮点的标量转换;如果是这样,那么这些将与C ++转换密切对应。

拳击和原始类型是一个相当独立且无关的问题。如果您想在C ++中使用类似的东西,那么template <typename T> struct Box会有一些转换为T运算符。

答案 1 :(得分:1)

简而言之:

将内置类型的强制转换视为static_cast和

将对象之间的强制转换视为C ++中的dynamic_cast。