如果您想定义一种方法来对您的客户类的一组对象进行比较。例如:
someClass instance1;
someClass instance2;
您可以通过为此类重载 < 运算符来做到这一点。
class someClass
{
bool operator<(someClass& other) const
{
//implement your ordering logic here
}
};
如果你想做的是比较,看看对象是否是同一个对象,你可以做一个简单的指针比较,看看它们是否指向同一个对象。我认为您的问题措辞不佳,我不确定您要问哪个。
编辑:
对于第二种方法,它真的很容易。您需要访问对象的内存位置。您可以通过许多不同的方式访问它。这里有几个:
class someClass
{
bool operator==(someClass& other) const
{
if(this == &other) return true; //This is the pointer for
else return false;
}
};
注意:我不喜欢上述内容,因为 == 运算符通常比仅比较指针更深入。对象可以表示具有相似品质但并不相同的对象,但这是一种选择。你也可以这样做。
someClass *instancePointer = new someClass();
someClass instanceVariable;
someClass *instanceVariablePointer = &instanceVariable;
instancePointer == instanceVariable;
这是无意义的和无效/错误的。如果它甚至可以编译,取决于您的标志,希望您使用的标志不允许这样做!
instancePointer == &instanceVariable;
这是有效的,并且会导致错误。
instancePointer == instanceVaribalePointer;
这也是有效的,并且会导致错误。
instanceVariablePointer == &instanceVariable;
这也是有效的,将导致 TRUE
instanceVariable == *instanceVariablePointer;
这将使用我们上面定义的 == 运算符来获得 TRUE 的结果;