Если я правильно понимаю ваш вопрос, ответ может зависеть от того, как вы создаете классы, из которых вы создаете объекты. В новейших версиях MATLAB классы могут быть определены двумя способами: класс «value» или класс «handle» (документация MATLAB здесь ). Цитирование из документации:
Класс значения:"Объекты классов значений постоянно связаны с переменными, которым они назначены. Когда объект значения копируется, данные объекта также копируются, и новый объект независимо от изменений исходного объекта. Экземпляры ведут себя как стандартные числовые и структурные классы MATLAB. "
Класс дескриптора:"Объекты классов дескрипторов используют дескриптор для ссылки на объекты класса. Дескриптор - это переменная, которая идентифицирует конкретный экземпляр класса. Когда копируется объект дескриптора дескриптор копируется, но не данные, сохраненные в свойствах объекта. Копия ссылается на те же данные, что и оригинал - если вы измените значение свойства исходного объекта, скопированный объект отразит то же изменение. "
В приведенном ниже примере кода приведены некоторые примеры взаимодействия с «вложенными» объектами, такими как описанные выше, как для вложенных объектов класса значений, так и для вложенных объектов класса handle:
% For value classes:
objC = C(...); % Make an object of class C, where "..." stands
% for any input arguments
objB = B(...,objC); % Make an object of class B, passing it objC
% and placing objC in field 'objC'
objA = A(...,objB); % Make an object of class A, passing it objB
% and placing objB in field 'objB'
% If the '.' operator (field access) is defined for the objects:
objA.objB.objC.D = 1; % Set field 'D' in objC to 1
objA.objB.objC = foo(objA.objB.objC,...); % Apply a method that
% modifies objC and
% returns the new
% object
% For handle classes:
hC = C(...); % Get a handle (reference) for a new object of class C
hB = B(...,hC); % Get a handle for a new object of class B,
% passing it handle hC and placing it in field 'hC'
hA = A(...,hB); % Get a handle for a new object of class A,
% passing it handle hB and placing it in field 'hB'
% If the '.' operator (field access) is defined for the objects:
hC.D = 1; % Set field 'D' to 1 for object referenced by hC; Note
% that hC and hA.hB.hC both point to same object, and
% can thus be used interchangably
foo(hC); % Apply a method that modifies the object referenced by hC
% If instead using get/set methods for the handle object:
set(hC,'D',1);
set(get(get(hA,'hB'),'hC'),'D',1); % If variable hC wasn't made, get
% reference from nested objects
foo(hC);
foo(get(get(hA,'hB'),'hC'));
Как вы можете видеть, использование класса дескриптора может помочь вам избежать необходимости связывать вызовы функций и ссылки на поля, сохраняя копию дескриптора (по сути, указатель) в другой переменной. Классы дескрипторов также устраняют необходимость перезаписывать старые копии объектов новыми, возвращаемыми методами, которые работают с этими объектами.
Надеюсь, это поможет с тем, что вы спрашивали.