gpt4 book ai didi

pointers - 通用访问类型 Ada

转载 作者:行者123 更新时间:2023-12-03 18:33:23 25 4
gpt4 key购买 nike

我仍然对如何all 感到困惑关键字适用于一般访问类型
有什么区别:type int_access is access all Integer;type int_access is access Integer;例如:

type int_ptr is access all Integer;

Var : aliased Integer := 1;

Ptr : int_ptr := Var'Access;
代码工作正常,但如果我删除 all关键字它给出了一个错误,结果必须是一般访问类型,我必须添加 all .

最佳答案

池特定的访问类型——那些没有“all”的访问类型——只能用于使用“new”关键字在堆(或某些用户定义的存储池)中分配的对象。
所以这是可以的:

type Int_Ptr is access Integer;
Prt: Int_Ptr := new Integer;
一般访问类型——带有“all”的那些——既可以用于堆分配的对象,也可以用于任何其他标记为“别名”的对象。所以这也可以:
type Int_Ptr is access all Integer;
Prt: Int_Ptr := new Integer;
因此,简而言之,规则是:
  • 不带“all”:只有用“new”分配的对象
  • 带有“all”:此外,任何标记为“别名”的对象。
  • 关于pointers - 通用访问类型 Ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67547448/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com