【发布时间】:2013-05-30 18:22:23
【问题描述】:
我有一个类 MyCloth 和我这样实例化的该类的一个对象实例:
MyCloth** cloth1;
在程序的某一时刻,我会做这样的事情:
MyCloth** cloth2 = cloth1;
然后在稍后的某个时间,我想检查cloth1 和cloth2 是否相同。 (类似于 Java 中的对象相等,仅在此处,MyCloth 是一个非常复杂的类,我无法构建 isEqual 函数。)
如何进行这种相等性检查?我在想也许检查它们是否指向相同的地址。这是一个好主意吗?如果是这样,我该怎么做?
【问题讨论】:
-
你确实没有有一个“
MyCloth类的对象”。如果您相信这一点,那么您真的必须重新考虑 C++。 -
@Kerrek SB:我只是想解释我想做什么,我知道我不能拥有 MyCloth 类的对象,但我不知道该怎么说,我是 C++ 新手,并试图在创建项目时弄清楚它。
-
@MadScienceDreams:cloth1 和cloth2 是指针的指针(每个cloth 由定义其参数、行为等的指针组成)
-
您要做的是验证每个指针是否指向相同的内存分配?
-
@user2399378 指针只是内存空间中的一个位置。它是内存中某个位置的地址。指针的“类型”表示如何解释该位置的 1 和 0。当您使用指针指针时,您有一个地址的地址。你所拥有的都没有指向一个类的实例。但是,如果您确实初始化了一个类,例如 'MyCloth* c1 = new MyCloth();'比你可以使用'MyCloth* c2 = NULL;/*或其他*/ c1==c2;'通过确定两个指针是否指向同一个内存来检查它是否是同一个实例。这不适用于虚拟继承!