我有一個對象解析文本文件。這是我的主要程序:如何在Fortran中正確定位對象?
program main
use Parser_class
implicit none
type(Parser) :: Parser
call Parser%ProcessFile('data.txt')
call Parser%Deallocate
end program main
其中類型定義
module Parser_class
type :: Parser
contains
procedure, public :: ProcessFile
procedure, public :: Deallocate
end type Parser
contains
subroutine ProcessFile(self)
...
end subroutine
subroutine Deallocate(self)
class(Parser) :: self
...
end subroutine
end module Parser_class
我讀到最後的關鍵字,並改變了類型定義
module Parser_class
type :: Parser
contains
procedure, public :: ProcessFile
final :: Deallocate
end type Parser
contains
subroutine ProcessFile(self)
...
end subroutine
subroutine Deallocate(self)
type(Parser) :: self
...
end subroutine
end module Parser_class
此外,在主程序我再也沒有call Parser%Deallocate
了。終結者現在不會在任何時候被調用。我以某種方式得到這是因爲我從不銷燬或覆蓋Parser
對象。但是,我怎麼能做到這一點,或者什麼是處理釋放過程的正確方法?
我加了'end program'。該程序按預期工作(只讀取文本文件)。我只是想知道,如果我使用'調用Parser%Deallocate'的方式是釋放所有數組的正確方法,或者我應該使用終結器來完成。另外的問題是什麼時候確切地敲定了終結者。雖然不能提供一個工作示例,但我對O-O Fortran還是比較陌生的。 – THo