2017-02-21 178 views
2

在C++中我只是比較兩個對象的內存地址。我如何在MATLAB中做類似的事情?MATLAB - 如何比較兩個對象是相同還是不同

最糟糕的情況是有一個靜態變量在每個構造函數中迭代,每個對象都將當前值作爲ID。但有沒有更好的解決方案?

預先感謝您。

@Edit: 我想假設我有一些給/不可改變類繼承手柄超載EQ延長這個問題。如果我想比較這個類的兩個對象我可以不知何故強制這兩個實例處理並使用超類的eq的實現?

+0

只是要清楚:你正在具體詢問有關matlab類,對吧? –

+0

是的,我解釋/說錯了嗎? – baxbear

+0

不,不,但是很多人認爲MATLAB中的矩陣/結構/單元表現得像類一樣,認爲'A = ones(3); B = A','B'和'A'是相同的,它們不是。只要清楚你在哪裏不會與此混淆,以及你在哪裏專門討論[MATLAB的oop](https://uk.mathworks.com/help/matlab/object-oriented-programming.html)。 –

回答

3

要測試兩個句柄對象ab是指同一個實例,則只需要使用a == b。這與eq(a, b)相同。這是defined behaviour of == for handle objects。即,對於句柄對象,==測試實例的相等性,而不是實例內值的相等。這與價值對象不同。

爲此,您需要使用句柄對象(classdef myObject < handle),因爲測試值對象的實例沒有意義。

N.B.如果您還需要爲句柄對象獲取某種實例標識符,那麼您需要執行類似於使用持久變量描述的操作。 Here's an example。在這種情況下,我會爲所有對象創建一個基類,這樣就不必將相同的代碼複製到每個類中。但是如果你想要做的就是測試兩個實例,那就沒有必要了。

相關問題