说我有一个类型:
type A;
type XA is access constant A;
type A is
record
Member : Natural := 1;
Neighbor : XA;
end record;
我对访问常量部分感到困惑。
如果我实例化XA
的实例指向A
的实例,那么只需保留对XA
"实例"的引用,我可以更改什么? ?
我可以更改XA
指向的对象的成员吗?我说不,但A
对象中XA
的邻居呢?
有人可以向我解释使用access constant
吗?
答案 0 :(得分:3)
这是一个显示其功能的小例子:
procedure Access_Constant is
type XA is access constant Integer;
A : aliased Integer;
X : XA;
begin
X := A'Access;
X.all := 4;
end Access_Constant;
当您尝试编译它时,X
的分配工作正常(X
是一个变量),而X.all
的分配是禁止的(因为X.all
是常数 - 根据XA
)的定义。
虽然声明XA
指向constant Integer
,但即使是变量也可以接受,但您只能将XA
实体的解除引用视为constant Integer
,即使对象是变量。