C++/CLI静态构造函数实例分析(四)
2006年11月21日 16:18 天极夜空
对 Point 的其他修改
读写属性在标签 8 中定义并在标签 12 中使用。
所有三个构造函数(标记为 9、10 和 11)都会创建新的 Point 实例,因此它们需要为 ID 分配一个唯一的值,而其他成员函数只会对现有实例进行操作,而不会修改它们。 任何 ID 值。 初始化仅在创建对象时发生,因此需要新的ID,而赋值发生在对象创建后,因此不需要新的ID。
在标签12中,返回一个int,这正是ID所需的类型。 同样,该函数可以返回一个值,从而保证哈希值的唯一性。 (当然,如果ID是long或者long类型的话,需要还原为int类型。)
至于是否包含ID前缀,都在标签13中完成。
场地
在非局部类中,如果使用标识符声明字段,则它通常是构造函数初始值设定项、构造函数主体或静态构造函数中的左值,在其他情况下它是右值。 。 (特别是,静态字段只能由静态构造函数修改,实例字段只能由实例构造函数修改。)除非第一次使用该类,或者创建实例时,该字段可以被视为只读类型。 例如,某些工程数据类型具有静态系统表。 每次运行程序时,都必须从文件中读取其值,但此后,它将被视为只读。 式中,例3就是这样的情况。
示例3:
使用 ;
参考类
/*1*/ 数组^ ;
/*2*/ ()
整数;
//找出需要多大的数组
// = ...
= gcnew 数组();
for (int i = 0; i < ; ++i)
// [i] = ...
:
/*3*/ 系数[int] {
get(int 索引) { [索引]; }
};
int main()
d;
尝试 {
/*4*/ d = ::系数[2];
抓住 (tion^ ex)
//处理异常
保存系数的静态数组在标签 1 中声明。在静态构造函数中,打开包含系数的文件。 确定数字后,分配相应大小的数组,并从文件中读取值并保存在数组中。 。
数组可以隐藏在只读命名索引属性后面,而不是让数组成为变量或让程序员直接使用下标访问数组。 (方括号表示索引属性。)在本例中,它是一个以逗号分隔的索引列表,这意味着该类可以使用下标进行索引,如标签 4 所示。(与多维数组下标类似,索引访问为索引属性在 [] 中使用逗号分隔的索引列表。)
默认情况下,C++/CLI 还允许索引属性名称作为关键字,即可以直接对实例名称进行索引,而无需使用任何成员名称。 但是,这仅适用于实例索引属性,因此不能在此处使用。 同样,该属性名为 Coeff。
字段不是编译时命名常量,因此它不需要包含常量的初始化过程,并且不限于具有标量。
如果一个类包含任何带有初始化过程的字段,它们将在执行静态构造函数之前按照声明的顺序进行初始化。
我们可以将 Point 类标记为吗? 毕竟只会在构造函数中修改。 答案是否定的,因为它是静态成员,只能由静态构造函数更新。