c++中的协变cv限定符适用于基本类型吗?
Do covariant cv-qualifiers apply to primitive types in C++?
在c++中,在派生类中减少返回类型的cv限定符是有效的:
class Base {
virtual const Base* f();
};
class Derived : public Base {
Base* f() override;
};
对于指向基本类型的指针是否有效?
class Base {
virtual const int* f();
};
class Derived : public Base {
int* f() override;
};
协变cv-限定符是否适用于c++中的基本类型?
没有§10.3.7虚函数重写函数的返回类型要么与被重写函数的返回类型相同,要么与函数的类协变。如果函数
D::f
覆盖函数B::f
, 函数的返回类型是协变的,如果它们满足以下条件:
- 都是指向类的指针,都是对类,或两者都是对类的右值引用
- 返回类型中类的直接或间接基类
B::f
返回类型中的类与该类为同一类在D::f
的返回类型中,或是明确且可访问的D::f
- 指针或引用具有相同的cv-限定符和
返回类型中的类类型D::f
相关文章:
- 使用迭代器成员函数是否仅适用于某些向量类型"empty()"?
- 为什么 std::vector 适用于类定义中的不完整类型?
- C++参数类型以接受适用于基于范围的 for 循环的所有序列
- 使 sfinae 适用于具有推导返回类型的函数
- 如何确保 "<<" 运算符适用于模板化 ADT 定义中的任何泛型类型?
- C++如何"overload"模板以同时适用于值和类型?
- 如何使函数模板仅适用于特定命名空间中的类型
- 仅适用于某些模板类型的覆盖方法
- 覆盖运算符<<适用于所有类型
- SWIG 多参数类型映射适用于函数,但如果有多个构造函数,则不适用于构造函数
- 为什么我们没有适用于所有类型的偏移量(具有虚拟继承的类型除外)?
- 我该如何文档文档以使文档适用于类成员而不是匿名类型
- 我可以得到一个适用于任何数字类型的模板化均匀分布生成器吗?
- C++开关只适用于积分类型的基本原理是什么
- std::bind通常适用于仅移动类型,特别是std::unique_ptr
- 适用于任何枚举类型的C++11哈希函数
- 函数包装器,适用于所有类型的函数,无需强制转换
- 在标准(C++11)中,有人说余数运算符只适用于积分类型
- 是否有适用于所有音频和视频(如 "audio/*" 和"video/*")的 MIME 类型?
- 为什么映射上的BOOST_FOREACH只适用于类型定义