除了添加一个带有一个输入的构造函数并显式复制其属性之外,是否有更好的方法为matlab实现一个句柄派生类的复制构造?
obj.property1 = from.property1; obj.property2 = from.property2;
等等
谢谢,Dani
还有另一种使用matlab.mixin.Copyable创建句柄对象副本的简单方法.如果从此类继承,您将获得一个复制方法,该方法将为您复制所有属性.
classdef YourClass < matlab.mixin.Copyable ... a = YourClass; b = copy(a); % b is a copy of a
此复制方法在不调用构造函数或设置属性函数的情况下创建副本.所以这应该更快.您还可以通过覆盖某些方法来自定义复制行为.
如果您想要一个快速而肮脏的解决方案,假设可以复制所有属性,请查看PROPERTIES函数.这是一个自动复制所有属性的类的示例:
classdef Foo < handle properties a = 1; end methods function F=Foo(rhs) if nargin==0 % default constructor F.a = rand(1); else % copy constructor fns = properties(rhs); for i=1:length(fns) F.(fns{i}) = rhs.(fns{i}); end end end end end
和一些测试代码:
f = Foo(); [f.a Foo(f).a] % should print 2 floats with the same value.