我有一个MyCloth类和我实例化的该类的一个对象实例,如下所示:

MyCloth** cloth1;

在程序的某一点上,我将执行以下操作:
MyCloth** cloth2 = cloth1;

然后在某个时候,我想检查cloth1cloth2是否相同。 (类似于Java中的对象相等性,仅在这里,MyCloth是一个非常复杂的类,我无法构建isEqual函数。)

我该如何进行平等检查?我在想也许检查他们是否指向相同的地址。这是一个好主意吗?如果是这样,我该怎么做?

最佳答案

您可以通过比较两个指针持有的地址来测试对象的身份。您提到Java;这类似于测试两个引用是否相等。

MyCloth* pcloth1 = ...
MyCloth* pcloth2 = ...
if ( pcloth1 == pcloth2 ) {
    // Then both point at the same object.
}

您可以通过比较两个对象的内容来测试对象是否相等。在C++中,这通常是通过定义operator==来完成的。
class MyCloth {
   friend bool operator== (MyCloth & lhs, MyCloth & rhs );
   ...
};

bool operator== ( MyCloth & lhs, MyCloth & rhs )
{
   return ...
}

使用operator ==定义后,您可以比较相等性:
MyCloth cloth1 = ...
MyCloth cloth2 = ...
if ( cloth1 == cloth2 ) {
    // Then the two objects are considered to have equal values.
}

10-08 08:20