主要内容

处理的比较和价值类

基本区别

一个价值类构造函数返回一个对象相关联的变量被分配。如果你重新分配这个变量,MATLAB®创建一个独立的原始对象的副本。如果你将这个变量传递给一个函数来修改它,该函数必须返回修改后的对象作为输出参数。数值等级信息的行为,看到避免不必要的副本的数据

一个处理类构造函数返回一个处理对象的引用对象创建。可以将处理对象分配给多个变量或将其传递给函数不会引起MATLAB原始对象的一个副本。一个函数,修改一个处理对象作为输入参数传递不需要返回的对象。

所有处理来自抽象类处理类。

创建一个值类

默认情况下,类MATLAB类值。下面的定义创建一个价值类命名MyValueClass:

classdefMyValueClass结束

创建一个处理类

创建一个处理类,派生的类处理类。

classdefMyHandleClass <处理结束

的行为MATLAB内置类

MATLAB的基本类值类(数字,逻辑,字符,细胞,结构体和函数处理)。例如,如果你创建一个对象的类int32复制这个对象,结果是两个独立的对象。当你改变的价值一个的价值,b不会改变。这种行为是典型的类代表值。

一个= int32 (7);b =一个;= ^ 4;
b 7

实现MATLAB图形对象作为处理对象,因为他们代表的视觉元素。例如,创建一个图形对象和其处理复制到另一个变量。这两个变量引用同一个对象。

x = 1:10;y = sin (x);l1 =线(x, y);l2 = l1;

设置线的属性对象使用处理的副本。

集(l2,“颜色”,“红色”)设置(l1,“颜色”,“绿色”)
get (l2,“颜色”)
ans = 0 1 0

调用删除功能上的l2处理破坏线对象。如果你试图设置颜色房地产在直线上l1,函数返回一个错误。

删除(l2)集(l1,“颜色”,“蓝”)
使用matlab.graphics.primitive错误。线/设置无效或删除对象。

如果你删除的对象通过删除任何一个现有的处理,所有副本现在是无效的,因为你的单一对象删除所有处理参考。

删除一个处理对象不一样清除处理变量。在图形对象层次结构,对象的父对象的引用。例如,父轴保持线的引用对象引用l1l2。如果你从工作区中明确这两个变量,对象仍然存在。

在处理对象的行为的更多信息,参见处理对象的行为

用户定义的值类

MATLAB将对象价值的类与你分配对象的变量。当你复制一个对象到另一个变量值或值对象传递给一个函数,MATLAB创建一个独立的副本对象和对象所包含的所有数据。新对象是独立于原始对象的变化。MATLAB数字和值对象像结构体类。基本上每个属性的行为像一个MATLAB数组。

值对象总是与一个工作区或临时变量相关联。值对象的范围时变量超出范围或清除。没有值对象的引用,只有副本,是独立的对象。

值对象的行为

这里是一个值类,存储在其价值数量财产。默认的属性值是这个号码1

classdefNumValue属性数量= 1结束结束

创建一个NumValue对象分配给变量一个

一个= NumValue
与属性= NumValue:数量:1

指定的值一个另一个变量,b

b =一个
b = NumValue属性:数量:1

的变量一个b是独立的。改变的价值数量的属性一个不会影响数量的属性b

一个。数量= 7
与属性= NumValue:数量:7
b
b = NumValue属性:数量:1

修改值对象的功能

当你值对象传递给一个函数,MATLAB函数的工作区中创建一个复制的对象。值对象是独立的副本,因为函数不能修改对象在调用者的工作区。因此,修改值对象的函数必须返回修改后的对象在调用者的重新分配工作空间。

有关更多信息,请参见对象修改

用户定义的处理类

派生的类的实例处理类对底层对象数据的引用。当你复制一个处理对象,MATLAB复制处理,但不复制数据存储在对象属性。复制是指同一个对象与原处理。如果你改变原始对象的属性值,复制句柄引用相同的改变。

处理对象的行为

这是一个处理类中存储一个值数量财产。默认的属性值是这个号码1

classdefNumHandle <处理属性数量= 1结束结束

创建一个NumHandle对象分配给变量一个

一个= NumHandle
与属性= NumHandle:数量:1

指定的值一个另一个变量,b

b =一个
b = NumHandle属性:数量:1

的变量一个b指相同的底层对象。改变的价值数量的属性一个也改变了数量的属性b。也就是说,一个b引用同一个对象。

一个。数量= 7
与属性= NumHandle:数量:7
b
b = NumHandle属性:数量:7

修改处理对象的函数

当你处理对象传递给一个函数,MATLAB的处理函数创建一个副本的工作区。因为处理引用相同的底层对象的副本,功能修改处理有效地修改对象在调用者的工作区。因此,没有必要修改处理对象的函数作为输入参数传递给修改对象返回给调用者。

有关更多信息,请参见对象修改

删除处理

你可以通过显式地调用处理销毁处理的对象删除方法。删除一个句柄类对象的处理使所有句柄无效。例如:

一个= NumHandle;b =一个;删除(a) b.Number
无效的或删除对象。

调用删除处理对象上调用该对象的析构函数或函数。看到处理类的析构函数为更多的信息。

初始化属性包含处理对象

初始化信息差异属性默认值的属性块和在构造函数中初始化属性,看看初始化属性值初始化数组的处理对象

确定对象的平等

值对象的平等意味着同一个类的对象和有相同的状态。

平等意味着处理处理对象变量引用同一个对象。您还可以识别处理的变量是指同一个类的不同对象具有相同的状态。

平等的值对象

以确定值对象是相同的大小和同等价值的内容,使用isequal。例如,使用前面定义的NumValue平等的类来创建两个实例和测试:

一个= NumValue;b = NumValue;isequal (a, b)
ans = 1

一个b是独立的,因此不是同一个对象。然而每个代表相同的值。

如果你改变一个值所代表的价值对象,对象不再是平等的。

一个= NumValue;b = NumValue;b。数量= 7;isequal (a, b)
ans = 0

类没有默认值情商方法来实现= =操作。

平等的处理对象

处理对象继承一个情商方法从处理基类。您可以使用= =isequal测试两种不同的处理对象之间的关系:

  • 句柄引用同一个对象:= =isequal返回真正的

  • 的处理是指同一个类的对象有相同的值,但不相同的对象,只有isequal返回真正的

使用前面定义的NumHandle类来创建一个对象并复制处理。

一个= NumHandle;b =一个;

测试平等使用= =isequal

a = =
ans = 1
isequal (a, b)
ans = 1

创建两个实例NumHandle类使用默认值。

一个= NumHandle;b = NumHandle;

确定一个b引用同一个对象。

a = =
ans = 0

确定一个b有相同的价值观。

isequal (a, b)
ans = 1

支持的功能处理类金宝app

派生的处理类允许您的类:

看到处理的超类在处理类和方法的更多信息。

相关的话题