文档

隐式类转换

类转换机制

当您使用连接或下标赋值创建或修改对象数组时,MATLAB®尝试转换不同的类型以符合数组的类。

为了执行转换,MATLAB尝试调用要转换的类定义的转换器方法。转换器方法与目标类具有相同的名称。例如,如果一个类定义了一个名为,此方法将类的对象转换为类的对象

如果不存在转换器,MATLAB会将要转换的对象传递给目标类的构造函数。

连接和下标赋值都可以使MATLAB应用这种类转换机制。转换可能成功,如果转换不可能,则可能导致错误。

连接

在连接操作中,主导对象决定结果数组的类。MATLAB确定了主导对象如下:

  • 用户定义的类比内置类占优势,比如

  • 如果任意两个对象之间没有确定的支配关系,则最左边的对象支配

例如,在语句中C = [A, B],如果一个是主导对象,MATLAB试图转换B给班级一个

下标赋值

在下标赋值中,赋值语句的左侧定义数组的类。如果你给数组元素赋值时,右侧与左侧是不同的类,MATLAB会尝试转换为左侧的类。

例如,将对象赋值为ClassB到数组的一个元素一个需要转换。

一个= ClassA;B = ClassB;(2) = B;

MATLAB首先查找由源对象类定义的转换器方法B.此转换器方法必须具有名称ClassA.下标赋值实际上是对定义的转换器的调用ClassB

(2) = B.ClassA% ClassB的调用方法

如果不存在转换器方法,MATLAB将源对象传递给目标类构造函数:

(2) = ClassA (B)%调用ClassA构造函数

相关的话题