如何强制定义析构函数

How to force the definition of a destructor

我想强制继承 类 以在 Fortran >= 2008 中定义析构函数。

到目前为止,我已经尝试了几种变体:

type, abstract :: parent_class_t
contains
    final, deferred, pass :: cleanup
end type

甚至无法编译。 我如何实现该目标?

最终绑定不会被继承。每种类型都可以声明自己的类型。当最终确定子派生类型时,将自动调用父最终确定过程。抽象类型不能有最终子例程,因为它没有意义。

标准(2018年草案)包含以下解释说明:

NOTE 7.46 Final subroutines are not inherited through type extension and cannot be overridden. The final subroutines of the parent type are called after any additional final subroutines of an extended type are called.

正如 francescalus 所指出的,语法是:

R753 final-procedure-stmtFINAL [::] final-subroutine-name-list

不能指定属性。