C 结构中的复用和对象类型

对象类型支持复用、多重实例化和动态实例化。实际上,对象类型是抽象数据类型 (ADT)。它们指定了可以在不同上下文中进行实例化的对象模板。

对象类型会生成到 C 结构中,并在对象的规范文件中带有它们自己的类型定义。类型定义引入了代表对象的 struct 的类型别名。类型名称由对象类型的名称组成,没有任何后缀。例如,以下结构和类型定义是为对象类型 B 生成的:

typedef struct B B;
struct B {
   /* data members of B */
};
/* operations of B */

由于 B 是显式类型,其他对象可以根据 B 来进行定义。规范文件和实施文件都是为对象类型而生成的。创建、初始化、清除和销毁操作都是为对象类型手动生成的。

类型 B 是在拥有 B 的程序包的规范文件中声明的,但在类型 B 的对象进行实例化之前,不会为 B 分配内存。

对象类型可以在系统初始化时静态地实例化,也可以在执行的过程中动态地实例化(缺省为动态)。因此,对象类型的实例的生命周期范围可能与系统不同。有关更多信息,请参阅动态内存分配


反馈