我正在尝试继承一个抽象类并覆盖它的所有纯虚函数
class A
{
virtual bool operator==(const A&) const = 0;
}
class B : A
{
bool operator==(const B& rhs) const override
{ ^^^^^^^^---problem here
// Comparison
}
}
错误:
Operator 'bool B::operator==(const B& rhs) const' has the 'override' specifier but does not override a base class member
最佳答案
当签名不同时,您不能覆盖 virtual
基类函数。在B类
中,它必须是
bool operator==(const A&) const override;
// ^^ must be reference to A
请注意,测试运行时多态类型的相等性总是很奇怪;你抽象出类型,然后你尝试比较两个实例 - 但在派生类型中这应该如何发生?尝试为旨在与值语义一起使用的类保留 operator==
。
关于c++ - 运算符 '...' 具有覆盖说明符但不覆盖基类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251471/