Tag: variance

为什么没有参数反差方法可以覆盖?

重写方法时,C ++和Java支持返回类型协方差。 但是,它们都不支持参数类型中的反差 – 相反,它转换为过载 (Java)或隐藏(C ++)。 那是为什么 ? 在我看来,允许这样做是没有害处的。 我可以在Java中找到它的一个原因 – 因为它无论如何都有“选择最特定版本”的重载机制 – 但是不能想到C ++的任何原因。 示例(Java): class A { public void f(String s) {…} } class B extends A { public void f(Object o) {…} // Why doesn’t this override Af? }