结构构造函数或初始化

时间:2013-10-30 10:00:55

标签: struct initialization d default-constructor

声明构造函数

之间有什么区别
this(...) { ... }

init(...) { ... }

代表D struct

我不知道因为BitArray中的std.bitmanip仅使用init()

1 个答案:

答案 0 :(得分:4)

这是因为D1没有结构构造函数。 std.bitmanip的BitArray是D1的std.bitarray模块http://www.digitalmars.com/d/1.0/phobos/std_bitarray.html的一个端口,所以它是用D1风格编写的,从未真正更新过使用新的语言功能。

对比D1的结构特征表: http://www.digitalmars.com/d/1.0/struct.html

用D2的 http://dlang.org/struct.html

你会看到很多不同之处 - D1结构本质上是一个C结构,对方法有一点点语法糖。由于构造函数是不可能的,因此您使用了init方法。 (类似地,D1也没有结构析构函数,使得像RAII这样的C ++风格习语几乎不可行 - 你必须使用scope(exit)mystruct.destroy();而不是样式代码。)

所以这只是一个历史性的事情。引擎盖下的构造函数与这些init方法的工作方式相同。