这个问题在几个小时前就在这里提出,让我意识到我从未在自己的代码中实际使用过协变返回类型.对于那些不确定协方差是什么的人,它允许(通常)虚函数的返回类型不同,前提是类型是同一继承层次结构的一部分.例如:
struct A {
virtual ~A();
virtual A * f();
...
};
struct B : public A {
virtual B * f();
...
};
Run Code Online (Sandbox Code Playgroud)
两个f()函数的不同返回类型被认为是协变的.较旧版本的C++要求返回类型相同,因此B必须如下所示:
struct B : public A {
virtual A * f();
...
};
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:有没有人有一个真实世界的例子,其中需要协变返回类型的虚函数,或者产生一个优秀的解决方案来简单地返回一个基指针或引用?