gpt4 book ai didi

templates - 派生对象的模板是基类型模板的子类吗

转载 作者:行者123 更新时间:2023-12-05 09:00:34 25 4
gpt4 key购买 nike

如果 'apple' 是 'fruit' 的子类,则 List<apple>List<fruit> 的子类这是正确的吗?

最佳答案

不! 可变容器并不是那样工作的——实际上,这是 OOP 的一个迷人方面。

进入List<fruit>你可以将香蕉 -- 插入 List<apple> ,你不能;所以违反了 Liskov 原则,这证明您没有子类化。

不可变 容器确实按预期工作(协方差是艺术术语)。

有趣的是,我从未在打印品中看到过这个迷人的法则(类似于在可变对象的世界中你不能说 Square IS-A Rectangle...但是在不可变对象的世界中,你可以!)——我只是通过经验和观察自己想出了它。我喜欢在这种情况下使用的学术引用,如果有人能提出来,顺便说一句;-)

关于templates - 派生对象的模板是基类型模板的子类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056582/

25 4 0