受保護 (Fortran 2003)
用途
PROTECTED 屬性可讓您更能控制模組實體的修改。 如果相同模組同時定義程序和實體,則模組程序只能修改受保護模組實體或其子物件。
語法
規則
如果您指定 EQUIVALENCE 陳述式所宣告的物件具有 PROTECTED 屬性,則該 EQUIVALENCE 陳述式中指定的所有物件都必須具有 PROTECTED 屬性。
無法定義具有透過使用關聯存取之 PROTECTED 屬性的非指標物件。
您不得針對 整數指標指定 PROTECTED 屬性。
具有透過使用關聯存取之 PROTECTED 屬性的指標物件不得顯示為下列任何一項:
- 作為 NULLIFY 陳述式或 POINTER 指派陳述式中的指標物件
- 作為 ALLOCATE 或 DEALLOCATE 陳述式中的可配置物件。
- 作為參照程序的實際引數,如果相關聯的虛擬引數是具有 INTENT(INOUT) 或 INTENT(OUT) 屬性的指標。
範例
在下列範例中, age 及 val 的值只能由宣告它們的模組中的子常式修改:
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