Skip to content

模块构造函数和析构函数


模块级代码之前/之后执行的模块构造函数/析构函数。

前言:

不要将模块构造函数(析构函数)与 UDT 构造函数(析构函数)混淆,后者在 UDT 实例的创建(销毁)时运行。

模块构造函数(析构函数)允许指定在程序开始(结束)时执行的过程。

描述

构造函数(析构函数)关键字用于强制在模块级代码之前(之后)执行过程。

定义为模块构造函数或析构函数的过程可以像普通过程一样使用(它们也可以从模块级代码内部调用)。

一个模块可以定义多个构造函数和析构函数过程。

在单个模块中,取决于目标系统的构建和运行时环境:

  • 模块构造函数(析构函数)可能按照定义的顺序或相反顺序执行,

  • 模块构造函数(析构函数)可能在具有构造函数(析构函数)的全局静态变量之前或之后执行,

  • 模块构造函数(析构函数)可能在具有优先级属性的其他模块构造函数(析构函数)之前或之后执行,

  • 具有优先级属性的模块构造函数(析构函数)可能在具有构造函数(析构函数)的全局静态变量之前或之后执行。

模块的构造函数和析构函数始终被执行(与其主代码一样),即使它被编译为次要模块或静态库,或者甚至作为动态库(dll)加载。

语法

vb
[Public | Private] Sub procedure_name [Alias "external_identifier"] [()] {Constructor | Destructor} [priority] [Static]

{ procedure body }

End Sub

用法

构造函数(析构函数)关键字仅在 Sub 定义中使用(禁止在声明行级别使用)。

定义为构造函数(析构函数)的 Sub 可以像普通 Sub 一样使用(它们可以从模块级代码内部调用)。

Sub 必须具有空参数列表。

优先级属性是 101 到 65535 之间的整数,可用于强制构造函数(析构函数)以特定顺序执行,相对于同样具有优先级属性的其他构造函数(析构函数)。

优先级值没有特定含义,只有数字与其他构造函数(析构函数)优先级的关系才有意义。

101 是最高(最低)优先级,相对于同样具有优先级属性的其他构造函数(析构函数),它最先(最后)执行。

UDT 的公共静态成员 Sub(具有空参数列表)可以定义为模块构造函数(析构函数),方法是在 Sub 定义中添加构造函数(析构函数)关键字。

由于不同构建系统上执行顺序的差异,应避免从模块构造函数(析构函数)中访问具有构造函数(析构函数)的全局静态对象。

参见

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系