我有一个MyCloth
类和我实例化的该类的一个对象实例,如下所示:
MyCloth** cloth1;
在程序的某一点上,我将执行以下操作:
MyCloth** cloth2 = cloth1;
然后在某个时候,我想检查
cloth1
和cloth2
是否相同。 (类似于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.
}