其他分享
首页 > 其他分享> > 参数中的C协方差

参数中的C协方差

作者:互联网

我想知道为什么C不支持参数的协方差,如下例所示,或者是否有办法实现它?

class base {
public:
virtual base* func(base * ptr) { return new base(); }
};

class derived : public base {
 public:
 virtual derived* func(derived * ptr) override { return new derived(); } //not allowed
};

解决方法:

返回类型是允许的,因为派生继承自base,但函数参数不起作用 – 并非所有基本实例也是派生的.如果在指向base的指针上使用不是派生的参数调用func,应该会发生什么?派生最多的实现不可调用.

标签:c,virtual,covariance
来源: https://codeday.me/bug/20190926/1818856.html