首页 > 解决方案 > Ada:`limited interface`中`limited`的目的是什么

问题描述

几周前我开始学习 Ada。我知道limited在某些情况下声明了一个有限的类型,不允许复制对象

来自Ada 参考手册 2012 7.5 1/2

受限类型是(视图)不允许复制(例如 assignment_statement)的类型。非限制类型是允许复制的(a 视图)类型。

但是,由于interface类型本质上是抽象的,因此无法创建“接口对象”,因此无法复制。这里的关键字是limited多余的吗?limited interface和有什么区别interface

type Abstract_Fruit_Type is interface;
type Abstract_Fruit_Type is limited interface;

标签: ada

解决方案


关键区别在于ARM 3.9.4 12/2

从非限制接口派生的类型应是非限制的。

所以如果你想实现一个有限类型的接口,那么你必须用limited关键字标记接口。然后,您将能够使用有限或非限制类型来实现此接口。

如果您在接口描述中省略了limited关键字,那么它的所有实现都将只是非限制类型。


推荐阅读