1
2
在大多数情况下,这两种方法的行为是相同的,选择只是一种偏好,取决于您觉得哪个更清晰/更容易维护等等。
本质区别在于,每次构造对象时,构造函数中初始化的属性都会单独初始化,而在属性块中使用默认值初始化的属性会在第一次读取类定义时初始化一次。属性块中的默认值是 ,而不是对象;并且(使用反射)可以查询该默认值,即使尚未实例化该类的任何实例。 在大多数情况下,这没有什么区别——但是当初始值是句柄对象,或者是不确定函数的输出时,它就有区别了。因此,请考虑以下两类:
关于将类作为默认值处理的这一点常常会让人感到困惑;但是这种行为并不特定于处理类。例如,考虑以下变化:
在这里
https://undocumentedmatlab.com/blog/handle-object-as-default-class-property-value ,特别是那篇文章下面的评论线程,用于讨论这个问题,并解释以这种方式设计MATLAB的原因。
使用上述类的第二个实现(使用
所以我们首先创建一个
为什么?因为
|
2
0
这是你的选择,除了一些情况。
让我提一下我们什么时候用冒号
1号也可以用在身体上,但当成员是
但是
用哪一个做你的工作。
但是在Matlab中,当你想定义
|
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
nick2225 · 隐式调用复制构造函数? 2 年前 |
nohaga · 为什么在本例中p3需要默认构造函数? 2 年前 |
Aadil Hoda · 为什么类类型的成员需要初始化? 2 年前 |
EloiGG · 具有任意类型的变量的可数的C++函数 2 年前 |