受保護 (Fortran 2003)

用途

PROTECTED 屬性可讓您更能控制模組實體的修改。 如果相同模組同時定義程序和實體,則模組程序只能修改受保護模組實體或其子物件。

語法

PROTECTED 屬性只能出現在模組的規格組件中。

讀取語法圖跳過視覺化語法圖PROTECTED ::entity_declaration_list
實體
具名變數不在共用區塊中。

規則

如果您指定 EQUIVALENCE 陳述式所宣告的物件具有 PROTECTED 屬性,則該 EQUIVALENCE 陳述式中指定的所有物件都必須具有 PROTECTED 屬性。

無法定義具有透過使用關聯存取之 PROTECTED 屬性的非指標物件。

您不得針對 整數指標指定 PROTECTED 屬性。

具有透過使用關聯存取之 PROTECTED 屬性的指標物件不得顯示為下列任何一項:
表 1. 與 PROTECTED 屬性相容的屬性
ALLOCATABLE 1 INTENT 儲存
非同步 伺服器配接卡的 STATIC 3
自動 3 指標 目標
連續 2 專用 暫時
維度 (dimension) PUBLIC  
附註:
  • 1 Fortran 2003
  • 2 Fortran 2008
  • 3 IBM 延伸

範例

在下列範例中, ageval 的值只能由宣告它們的模組中的子常式修改:
      module mod1
          integer, protected :: val
          integer :: age
          protected :: age
          contains
              subroutine set_val(arg)
                  integer arg
                   val = arg
              end subroutine
               subroutine set_age(arg)
                  integer arg
                   age  = arg
              end subroutine
      end module
      program dt_init01
          use mod1
          implicit none
          integer :: value, his_age
          call set_val(88)
          call set_age(38)
          value = val
          his_age = age
          print *, value, his_age
      end program

相關資訊