为 何不同类型vector不能赋值

因为这将降低类型系统的安全性。例如:

如果调用 f(v) 是合法的,我们将得到伪装成 Apple 的 Orange。

当然,也可以把语言设计成允许这种不安全的类型转换,然后依赖动态类型检查保证访问的合法性。这将导致每次访问 v 的成员时,都要进行运行时检查,而且 h() 也必须在遇到 v 的最后一个元素后抛出异常。