1

假设我有一个类型:

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吗?

4

1 回答 1

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被声明为指向 a constant Integer,即使是变量也是可以接受的,但你只能将XA实体的取消引用视为 a constant Integer,即使对象是变量。

于 2018-05-28T11:42:39.470 回答