在 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
我希望Matlabm
在这个阶段调用析构函数,但似乎没有!
我的问题:
变量时如何强制调用析构函数
clear
?Matlab 的这种默认行为是否有意义?
clear
在ing 变量时调用析构函数不是更合乎逻辑吗?Matlab的类是否可能没有detructor方法(即在类被销毁时没有要调用的默认方法)?还是我错过了什么?
是否可能只有派生自的类
handle
具有析构函数(delete
方法)?
谢谢!
编辑:按照乔纳斯的回答,简要总结:
Matlab 有两种类型的类:值类(默认)和句柄类(派生自handle
超类)。值类倾向于提供更好的性能,但是,它们没有析构函数功能。
handle
类确实有一个析构函数:delete
当类被销毁时调用。从类析构函数的更多细节中查看这个问题。handle
如果希望为值类提供类似析构函数的功能,Jona 的回答提出了一种利用onCleanup
功能的方法。
感谢您的好答案和有见地的评论!