【发布时间】:2010-11-18 15:31:09
【问题描述】:
This question 几个小时前在这里被问到,让我意识到 我从未在自己的代码中真正使用过协变返回类型。对于那些 不确定协方差是什么,它允许(通常)虚拟的返回类型 如果类型是相同继承的一部分,则功能不同 等级制度。例如:
struct A {
virtual ~A();
virtual A * f();
...
};
struct B : public A {
virtual B * f();
...
};
两个 f() 函数的不同返回类型被称为协变的。旧版本的 C++ 要求返回类型相同,因此 B 必须如下所示:
struct B : public A {
virtual A * f();
...
};
所以,我的问题是:有没有人有一个现实世界的例子,其中需要协变返回类型的虚函数,或者产生一个更好的解决方案来简单地返回一个基指针或引用?
【问题讨论】:
-
当我读到这个问题时,我的反应是完全一样的。有什么问题 - 不要使用协变返回类型!
标签: c++ covariance return-type