c++ - 运算符“...”具有覆盖说明符但不覆盖基类成员
问题描述
我正在尝试继承一个抽象类并覆盖它的所有纯虚函数
class A
{
virtual bool operator==(const A&) const = 0;
}
class B : A
{
bool operator==(const B& rhs) const override
{ ^^^^^^^^---problem here
// Comparison
}
}
错误:
运算符 'bool B::operator==(const B& rhs) const' 具有 'override' 说明符,但不覆盖基类成员
解决方案
当签名不同时,您不能覆盖virtual
基类函数。中class B
,必须是
bool operator==(const A&) const override;
// ^^ must be reference to A
请注意,测试运行时多态类型是否相等总是很奇怪;您抽象出类型,然后尝试比较两个实例-但是跨派生类型应该如何发生?尝试为operator==
打算与值语义一起使用的类保留。
推荐阅读
- r - 向量化两个参数函数
- jenkins - 詹金斯两次触发工作
- java - 如何在 Android 的 SQLite 数据库中查找具有 TEXT 或 VARCHAR 类型的特定列的内存占用(大小)?
- python-3.x - Python Pillow:用数据加载图像
- flutter - 如何在 Flutter 中使用 OneSignal 通知按钮
- java - 如何使用自定义拆分器拆分由分隔符分隔的 csv 列?
- python - 如何根据单元格值对表格数据进行不同的样式设置?
- java - 为什么 Pattern.compile 在 android studio 和 Java SE 中的行为不同?
- html - 跨浏览器上的字体排版问题
- java - 如何根据以下字符/单词匹配 URI 字符串的特定部分