MATLAB - 如何比较两个对象是相同还是不同

时间:2017-02-21 10:45:59

标签: matlab oop object

在C ++中,我只想比较两个对象的内存地址。我如何在MATLAB中做类似的事情?

最坏的情况是在每个构造函数中都有一个静态变量,每个对象都将当前值作为ID。但是有更好的解决方案吗?

提前谢谢。

@Edit: 我想通过假设我有一些给定/不可更改的类继承句柄重载eq 来扩展这个问题。如果我想比较这个类的两个对象我能以某种方式强制转换两个实例来处理并使用超类的eq实现吗?

1 个答案:

答案 0 :(得分:3)

要测试两个句柄对象ab是否引用同一个实例,您只需要使用a == b。这与eq(a, b)相同。这是defined behaviour of == for handle objects。即,对于句柄对象,==测试实例的相等性,而不是实例中值的相等性。这与值对象不同。

为此,您需要使用句柄对象(classdef myObject < handle),因为测试值对象的实例没有意义。

N.B。如果您还需要为句柄对象获取某种实例标识符,那么您需要执行类似于使用持久变量描述的内容。 Here's an example。在这种情况下,我会将它作为所有对象的基类,因此您不必将相同的代码复制到每个类中。但如果您只想测试两个实例,则不必要。