Matlabにはクラスがあります
classdef myClass
properties
% some properties here...
end
methods ( Access = 'public' )
function obj = myClass()
% constructor...
end
function obj = delete( obj )
% suppose to be destructor...
fprintf(1, 'delete\n');
end
end % public methods
end
clear
タイプの変数のときのMatlabのデフォルトの動作は何myClass
ですか? 例えば:
>> m = myClass();
>> clear m
この段階でMatlabがデストラクタを呼び出すことを期待していますm
が、そうではないようです!!
私の質問:
clear
変数を ing するときにデストラクタを強制的に呼び出すにはどうすればよいですか?このMatlabのデフォルトの動作は意味がありますか?
clear
変数を ing するときにデストラクタを呼び出す方が論理的ではありませんか?Matlab のクラスに detructor メソッドがない (つまり、クラスが破棄されたときに呼び出される既定のメソッドがない) 可能性はありますか? または、何か不足していますか?
から派生したクラスだけ
handle
がデストラクタ (delete
メソッド) を持つことは可能ですか?
ありがとう!
編集:ジョナスの答えに続いて、簡単な要約:
Matlab には、値クラス (デフォルト)とハンドル クラス (スーパー クラスから派生handle
)の 2 種類のクラスがあります。値クラスはパフォーマンスが向上する傾向がありますが、デストラクタ機能はありません。
handle
delete
クラスには、クラスが破棄されるときに呼び出されるデストラクタ関数があります。クラスデストラクタの詳細については、この質問を参照してください。handle
値クラスにデストラクタのような機能が必要な場合は、Jona の回答でonCleanup
機能を利用する方法が提案されています。
良い答えと洞察力のあるコメントをありがとう!