我有一个t_file
带有终结例程的派生类型,close
它只是将“终结”写入屏幕。还有一个函数返回 type 的实例t_file
。这个程序的输出是
Finalization.
Finalization.
Just opened
2000
Done.
我有两个问题:
- 为什么最终确定发生在输出之前
Just opened
? - 为什么最终确定会发生两次?
我的编译器是 Intel(R) Visual Fortran Composer XE 2011 12.1.3526.2010。
这是代码:
module m_file
implicit none
type t_file
integer::iu=1000
contains
final::close
end type
contains
function openFile() result(f)
implicit none
type(t_file)::f
f%iu = 2000
end function
subroutine close(this)
implicit none
type(t_file)::this
write(*,*) 'Finalization.'
end subroutine
end module
program foo
use m_file
implicit none
type(t_file)::f
f = openFile()
write(*,*) 'Just opened'
write(*,*) f%iu
write(*,*) 'Done.'
read(*,*)
end program