【发布时间】:2017-01-22 12:45:47
【问题描述】:
我在运算符重载和继承方面需要帮助。
class A {
public:
virtual bool operator==(const A& a);
};
class B : public A {
public:
bool operator==(const B& b) { ... }
};
我希望能够做这样的事情。问题在于操作员的参数。我希望只能在 B 类中获得 B,但由于最初的超载,我不能。我该如何解决?
【问题讨论】:
-
“我希望能够做这样的事情。” - 这本身就是一个问题。你为什么需要这个?基本上导致了双重调度的问题;即,所需的函数实现不再取决于 one 而是 *two 对象的动态类型。就开发复杂性而言,要做到这一点会付出很多代价,而收益却很少。如果我是你,我会完全删除操作员。
-
如果您不想将
A与B进行比较,为什么A首先提供了虚拟operator==()? -
我希望能够拥有A的列表,并且能够对B和C进行操作。
-
@Znatte:如果您比较两个
As,您是否关心对象的B和C部分?
标签: c++ inheritance operator-overloading