当类或用户定义的类型超出范围或被销毁时自动调用
语法
Type typename
field declarations
Declare Destructor ( )
End Type
Destructor typename ( )
statements
End Destructor
参数
说明
当用户定义
Type或
Class变量超出范围或使用
Delete操作符显式销毁时,将调用析构函数方法。
typename 是声明和定义
Destructor方法的类型的名称。
typename 的名称解析遵循与
Namespace中使用的过程相同的规则。
Destructor方法传递一个隐藏的
This参数,其类型与
typename 相同。
一个类型中的析构函数在它的任何字段上的析构函数之前被调用。因此,所有字段都可以通过析构函数体中隐藏的
This参数访问。
每个类型只能声明和定义一个析构函数。
由于
End语句不会关闭任何范围,如果
End语句用于终止程序,对象析构函数将不会自动调用。
Destructor也可以像其他成员方法(
Sub)直接从
typename 实例调用,并具有相同的语法,即使用成员访问操作符,例如
obj .Destructor().该对象及其所有成员被假设为构造并处于有效状态,否则其效果未定义并可能导致崩溃。在手动构建
obj 的情况下,此语法很有用。与
obj.Constructor() 或
Placement New.
例子
Type T
value As ZString * 32
Declare Constructor ( init_value As String )
Declare Destructor ()
End Type
Constructor T ( init_value As String )
value = init_value
Print "创建:"; value
End Constructor
Destructor T ()
Print "毁:"; value
End Destructor
Sub MySub
Dim x As T = ("A.x")
End Sub
Dim x As T = ("main.x")
Scope
Dim x As T = ("main.scope.x")
End Scope
MySub
输出:
Creating: main.x
Creating: main.scope.x
Destroying: main.scope.x
Creating: A.x
Destroying: A.x
Destroying: main.x
方言差异
与QB差别
参考