Oop Fortran容器类是否会自动调用包含的对象';什么是析构函数?
假设我有一个盒子类,里面有一些玻璃杯:Oop Fortran容器类是否会自动调用包含的对象';什么是析构函数?,oop,fortran,destructor,Oop,Fortran,Destructor,假设我有一个盒子类,里面有一些玻璃杯: TYPE :: box_class TYPE(glass_class) :: cup1 TYPE(glass_class) :: cup2 END TYPE 如果glass类具有析构函数: TYPE:: glass_class CONTAINS FINAL :: glass_destructor END TYPE 当我的box对象超出范围时,将自动调用glass\u析构函数,或者我是否需要在box析构函数中手动调用glass\u析
TYPE :: box_class
TYPE(glass_class) :: cup1
TYPE(glass_class) :: cup2
END TYPE
如果glass类具有析构函数:
TYPE:: glass_class
CONTAINS
FINAL :: glass_destructor
END TYPE
当我的
box
对象超出范围时,将自动调用glass\u析构函数
,或者我是否需要在box
析构函数中手动调用glass\u析构函数
?这是整个终结点,它是自动的。是的,将调用它们,因为它们超出范围,与父final过程超出范围时调用它的方式相同
如果有指针组件,则可能需要显式释放,但即使这样,最终过程也会自动调用释放。派生类型
glass\u类
是可终结的,因为它有最终的子例程。派生类型box\u类
即使没有最终的子例程也可以终止,因为有可终止的组件(非指针和非可分配)
现在,当一个类型(box_类)
的对象被最终确定时,我们遵循最终确定过程(F2008,4.5.6.2):
- 不调用任何子例程来完成box对象李>
- cups的最终子例程以某种处理器相关顺序调用李>
- 不存在父最终子例程李>