Assume the following class
classdef A < handle
methods
function obj = A
disp('constructor called')
end
end
end
Now create an array of 10 instances of A
>> a(10) = A
constructor called
constructor called
Why is the constructor called twice? Why not 10x or 1x?

 채택된 답변

Steven Lord
Steven Lord 2019년 8월 7일

0 개 추천

You've told MATLAB that you want fill element 10 of the array a with the output returned by a call to the constructor with no inputs. MATLAB also needs to know what you want elements 1 through 9 to be and it determines the latter by making a call to the constructor with no inputs, as stated on this documentation page. It uses that "default" element of the class (from the automatic 0-input constructor call) to fill in all the elements up to element 10, then uses the one you explicitly created as that tenth element.
Actually, checking back I see your object is a handle object. In that case, see this other documentation page which goes into a bit more detail about how that is handled. Same general answer, but with an extra detail or two specific to handle objects.

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Construct and Work with Object Arrays에 대해 자세히 알아보기

질문:

2019년 8월 7일

답변:

2019년 8월 7일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by