受保護的模組實體
除了允許模組實體具有訪問控制(是 public
或 private
)模組實體還可以具有 protect
屬性。受公共保護的實體可以使用相關聯,但使用的實體受其使用限制。
module mod
integer, public, protected::i=1
end module
program test
use mod, only : i
print *, i ! We are allowed to get the value of i
i = 2 ! But we can't change the value
end program test
不允許將公共受保護目標指向其模組外部
module mod
integer, public, target, protected::i
end module mod
program test
use mod, only : i
integer, pointer::j
j => i ! Not allowed, even though we aren't changing the value of i
end program test
對於模組中的公共保護指標,限制是不同的。受保護的是指標的關聯狀態
module mod
integer, public, target::j
integer, public, protected, pointer::i => j
end module mod
program test
use mod, only : i
i = 2 ! We may change the value of the target, just not the association status
end program test
與變數指標一樣,也可以保護過程指標,再次防止目標關聯的改變。