gpt4 book ai didi

C++ 对象相等

转载 作者:可可西里 更新时间:2023-11-01 17:16:09 26 4
gpt4 key购买 nike

我有一个类 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.
}

关于C++ 对象相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com