[fh_plus, fh_minus, fh_mtimes] = tstfun () fh_plus = function_handle with value: @plus fh_minus = function_handle with value: @minus fh_mtimes = function_handle with value: @mtimes obj = tstcls (); fh_mrdivide = obj.get_fh (); functions (fh_plus) ans = struct with fields: function: 'plus' type: 'simple' file: '' functions (fh_minus) ans = struct with fields: function: 'minus' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\tstfun.m' parentage: {1×2 cell} functions (fh_mtimes) ans = struct with fields: function: 'mtimes' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\private\mtimes.m' parentage: {'mtimes'} functions (fh_mrdivide) ans = struct with fields: function: 'mrdivide' type: 'classsimple' file: 'MATLAB built-in function' class: 'tstcls' fh_plus (1, 2) ans = 3 fh_minus (3, 4) local minus! ans = [] fh_mtimes (5, 6) private mtimes! ans = [] fh_mrdivide (obj, 8) method tstcls.mrdivide! ans = [] %% Does the behavior change if we change to another directory so that %% the private function is no longer visible? cd subdir pwd ans = 'C:\temp\mltest\str2func-test\subdir' functions (fh_plus) ans = struct with fields: function: 'plus' type: 'simple' file: '' functions (fh_minus) ans = struct with fields: function: 'minus' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\tstfun.m' parentage: {1×2 cell} functions (fh_mtimes) ans = struct with fields: function: 'mtimes' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\private\mtimes.m' parentage: {'mtimes'} functions (fh_mrdivide) ans = struct with fields: function: 'mrdivide' type: 'classsimple' file: 'MATLAB built-in function' class: 'tstcls' fh_plus (1, 2) ans = 3 fh_minus (3, 4) local minus! ans = [] fh_mtimes (5, 6) private mtimes! ans = [] fh_mrdivide (obj, 8) method tstcls.mrdivide! ans = [] %% What if we also clear functions? clear functions functions (fh_plus) ans = struct with fields: function: 'plus' type: 'simple' file: '' functions (fh_minus) ans = struct with fields: function: 'minus' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\tstfun.m' parentage: {1×2 cell} functions (fh_mtimes) ans = struct with fields: function: 'mtimes' type: 'scopedfunction' file: 'C:\temp\mltest\str2func-test\private\mtimes.m' parentage: {'mtimes'} functions (fh_mrdivide) ans = struct with fields: function: 'mrdivide' type: 'classsimple' file: 'MATLAB built-in function' class: 'tstcls' fh_plus (1, 2) ans = 3 fh_minus (3, 4) local minus! ans = [] fh_mtimes (5, 6) private mtimes! ans = [] fh_mrdivide (obj, 8) {Error using / Method 'mrdivide' is not defined for class 'tstcls' or is removed from MATLAB's search path. Error in tstscript (line 46) fh_mrdivide (obj, 8) } diary off