草庐IT

covariant

全部标签

C# : Is Variance (Covariance/Contravariance) another word for Polymorphism?

我试图从网上的几篇文章和StackOverflow上的问题中找出Covariance和Contravariance这两个词的确切含义,据我所知,这只是多态性的另一种说法。我上面的说法正确吗?还是我听错了? 最佳答案 肯定和多态有关。不过,我不会说它们只是多态性的“另一个词”——它们是关于非常具体的情况,在这种情况下,您可以将一种类型视为另一种类型在特定上下文中。例如,使用正常的多态性,您可以处理对Banana的任何引用作为对Fruit的引用-但这并不意味着您可以替代Fruit每次当您看到Banana类型时.例如,List不能被视为L

C++:如何在不强制转换的情况下避免继承类中的 "invalid covariant return type"?

我有一个非常复杂的类层次结构,其中的类是相互依赖的交叉类:有两个抽象类A和C,它们分别包含一个返回C和A实例的方法。在他们继承的类中,我想使用协变类型,在这种情况下这是一个问题,因为我不知道一种方法来前向声明继承关系。我得到一个“test.cpp:22:error:invalidcovariantreturntypefor'virtualD*B::outC()'”-错误,因为编译器不知道D是C的子类。classC;classA{public:virtualC*outC()=0;};classC{public:virtualA*outA()=0;};classD;classB:publi
12