Bri*_*sey 7 c++ const covariance
在C++中,减少派生类中返回类型的cv限定符是有效的:
class Base {
virtual const Base* f();
};
class Derived : public Base {
Base* f() override;
};
Run Code Online (Sandbox Code Playgroud)
这对指向原始类型的指针有效吗?
class Base {
virtual const int* f();
};
class Derived : public Base {
int* f() override;
};
Run Code Online (Sandbox Code Playgroud)
协变cv限定符是否适用于C++中的原始类型?
没有
§10.3.7虚函数
重写函数的返回类型应与重写函数的返回类型相同或与函数类的协变相同.如果函数
D::f覆盖函数B::f,则函数的返回类型如果满足以下条件则是协变的:
- 两者都是类的指针,都是对类的左值引用,或者两者都是对类的右值引用
- 返回类型中的类与返回类型中
B::f的类是同一个类D::f,或者是返回类型中类的明确且可访问的直接或间接基类D::f- 指针或引用都具有相同的cv-qualification和返回类型中的类类型
D::f
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |