【发布时间】:2010-05-13 08:49:51
【问题描述】:
在我的程序中,我有以下类层次结构:
class Base // Base is an abstract class
{
};
class A : public Base
{
};
class B : public Base
{
};
我想做以下事情:
foo(const Base& one, const Base& two)
{
if (one == two)
{
// Do something
} else
{
// Do something else
}
}
我有关于 operator==() 的问题。当然比较A 和B 的实例是没有意义的,但是比较Base 的两个实例应该是可能的。 (你不能比较狗和猫,但是你可以比较两种动物)
我想要以下结果:
A == B=>false
A == A=>true或false,取决于两个实例的有效值
B == B=>true或false,取决于两个实例的有效值
我的问题是:这是一个好的设计/想法吗?这甚至可能吗?我应该编写/重载哪些函数?
【问题讨论】:
标签: c++ inheritance comparison operator-overloading