C 中的虚函数返回类型
问题:
继承的类可以实现一个具有不同返回类型的虚函数,而不使用模板作为返回?
答案:
在某些情况下,是的。允许派生类重写具有不同返回类型的虚函数,前提是返回类型与原始返回类型是协变的。协方差意味着派生函数的返回类型是基函数返回类型的子类型。
考虑以下示例:
class Base { public: virtual ~Base() {} virtual Base* clone() const = 0; }; class Derived: public Base { public: virtual Derived* clone() const { return new Derived(*this); } };
在此示例中,基类定义一个名为clone 的纯虚函数,返回一个Base*。 Derived 类重写此虚函数并返回 Derived*。即使返回类型与基类不同,但这也是有效的,因为 Derived* 是 Base* 的子类型。
一般来说,函数的返回类型不被视为其签名的一部分。只要返回类型是协变的,您就可以用任何返回类型重写成员函数。
以上是C 中的派生类可以重写具有不同返回类型的虚函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!