【发布时间】:2014-04-03 23:32:24
【问题描述】:
所以在我的编译器类中,我们查看了代码
p : Point;
p <- new ColorPoint;
这里 p 被声明为一个 Point,但被分配了一个 ColorPoint 对象,而 ColorPoint 是 Point 的一个子类。
老师说p有静态类型Point,但它有动态类型ColorPoint。他说那是因为编译器在编译时不知道 p 是 ColorPoint,它只在运行时才知道。这是为什么?编译器看不到 p 被分配了一个 ColorPoint 对象吗?
【问题讨论】:
标签: types compiler-construction