相关疑难解决方法(0)

C++协方差何时是最佳解决方案?

这个问题在几个小时前就在这里提出,让我意识到我从未在自己的代码中实际使用过协变返回类型.对于那些不确定协方差是什么的人,它允许(通常)虚函数的返回类型不同,前提是类型是同一继承层次结构的一部分.例如:

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)

所以,我的问题是:有没有人有一个真实世界的例子,其中需要协变返回类型的虚函数,或者产生一个优秀的解决方案来简单地返回一个基指针或引用?

c++ return-type covariance

29
推荐指数
3
解决办法
1万
查看次数

标签 统计

c++ ×1

covariance ×1

return-type ×1