【发布时间】:2010-09-22 13:57:34
【问题描述】:
当比较两个(相同类型的)对象时,有一个比较函数接受同一类的另一个实例是有意义的。如果我在基类中将其实现为虚函数,那么函数的签名也必须在派生类中引用基类。解决这个问题的优雅方法是什么?比较不应该是虚拟的吗?
class A
{
A();
~A();
virtual int Compare(A Other);
}
class B: A
{
B();
~B();
int Compare(A Other);
}
class C: A
{
C();
~C();
int Compare(A Other);
}
【问题讨论】:
-
不,使用 == 运算符是有意义的。这就是它的用途。不需要比较功能。
-
@jalf 我认为他想做大于、等于或小于比较,就像 strcmp() 一样。请注意,Compare() 返回的是 int,而不是 bool。