use*_*026 17 c++ virtual covariance
我想知道为什么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
};
Run Code Online (Sandbox Code Playgroud)
Fle*_*exo 16
返回类型是允许的,因为derived继承自base,但是函数参数不能工作 - 并非所有base实例也都是derived.在func调用base带有不是参数的参数的指针的情况下应该发生什么derived?派生最多的实现不可调用.
| 归档时间: |
|
| 查看次数: |
3609 次 |
| 最近记录: |