受保護的模組實體

除了允許模組實體具有訪問控制(是 publicprivate)模組實體還可以具有 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

與變數指標一樣,也可以保護過程指標,再次防止目標關聯的改變。