在C++中我只是比较两个对象的内存地址。我如何在MATLAB中做类似的事情?MATLAB - 如何比较两个对象是相同还是不同
最糟糕的情况是有一个静态变量在每个构造函数中迭代,每个对象都将当前值作为ID。但有没有更好的解决方案?
预先感谢您。
@Edit: 我想假设我有一些给/不可改变类继承手柄和超载EQ延长这个问题。如果我想比较这个类的两个对象我可以不知何故强制这两个实例处理并使用超类的eq的实现?
在C++中我只是比较两个对象的内存地址。我如何在MATLAB中做类似的事情?MATLAB - 如何比较两个对象是相同还是不同
最糟糕的情况是有一个静态变量在每个构造函数中迭代,每个对象都将当前值作为ID。但有没有更好的解决方案?
预先感谢您。
@Edit: 我想假设我有一些给/不可改变类继承手柄和超载EQ延长这个问题。如果我想比较这个类的两个对象我可以不知何故强制这两个实例处理并使用超类的eq的实现?
要测试两个句柄对象a
和b
是指同一个实例,则只需要使用a == b
。这与eq(a, b)
相同。这是defined behaviour of ==
for handle objects。即,对于句柄对象,==
测试实例的相等性,而不是实例内值的相等。这与价值对象不同。
为此,您需要使用句柄对象(classdef myObject < handle
),因为测试值对象的实例没有意义。
N.B.如果您还需要为句柄对象获取某种实例标识符,那么您需要执行类似于使用持久变量描述的操作。 Here's an example。在这种情况下,我会为所有对象创建一个基类,这样就不必将相同的代码复制到每个类中。但是如果你想要做的就是测试两个实例,那就没有必要了。
只是要清楚:你正在具体询问有关matlab类,对吧? –
是的,我解释/说错了吗? – baxbear
不,不,但是很多人认为MATLAB中的矩阵/结构/单元表现得像类一样,认为'A = ones(3); B = A','B'和'A'是相同的,它们不是。只要清楚你在哪里不会与此混淆,以及你在哪里专门讨论[MATLAB的oop](https://uk.mathworks.com/help/matlab/object-oriented-programming.html)。 –