In Matlab I have a class

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

What is the default behavior of Matlab when I clear a variable of type myClass? For example:

>> m = myClass();
>> clear m

I would expect Matlab to call the destructor of m at this stage, but it seems like it doesn't!!

My questions:

  1. How can I force a call to the destructor when clearing a variable?

  2. Is this default behavior of Matlab's makes any sense? Isn't it more logical to call the destructor when clearing a variable?

  3. Is it possible that Matlab's classes do not have a detructor method (that is, there is no default method to be called when the class is destroyed)? Or am I missing something?

  4. Is it possible that only classes derived from handle have a destructor (the delete method)?

Thanks!

EDIT : following Jonas' answer, a brief summary:

Matlab has two types of classes: value classes (the default) and handle classes (derived from handle super class). Value classes tends to provide better performance, however, they do not have a destructor functionality.

handle classes do have a destructor function: <

Edit
Report