没有初始化属性的Matlab类构造函数

时间:2016-09-30 18:39:48

标签: matlab class

与C ++类似,我们可以在没有初始化的情况下定义构造函数,我们可以在Matlab中使用classdef吗?我试过但它抱怨“测试已经定义”,这意味着我无法定义两个具有相同名称的函数。

classdef Test
    properties
        id;
    end
    methods
        %constructor without initialization
        function obj = Test
        end

        %constructor with initialization
        function obj = Test(x)
            obj.id = x;
            end
        end

end

1 个答案:

答案 0 :(得分:2)

您的构造函数定义可以指定输入参数,并且技术上不必由用户传递。您可以将exist与输入变量名称一起使用,以确定是否提供了输入,并且仅在提供输入时分配属性值。

classdef Test
    properties
        id;
    end

    methods
        function obj = Test(x)
            if exist('x', 'var')
                obj.id = x;
            end
        end
    end
end