众所周知,数组在定义上是同质的。因此,我们必须将相同类型的数据放入数组中。但是,如果我们要存储不同类型的数据,那将是诀窍?在像C之类的旧语言中,我们可以使用联合将不同类型人为地合并为一种类型。然后我们可以在这个新类型上定义一个数组。此处,数组元素实际包含的对象的类型由标签确定。让我们看一个这样的结构-
struct Vehicle{ int id; union { Bus b; Bike c; Car d; } };
然后,程序员将必须建立有关如何使用id标记的约定。例如,假设id为0,则表示所代表的Vehicle实际上是公共汽车等。联合会为Bus,Bike和Car中最大的类型分配内存。如果对象的大小之间存在很大差异,则这对于存储来说是浪费的。
在面向对象的语言中,我们可以使用继承的概念。假设我们有一个名为Vehicle的类,而其他所有类型(如Bus,Bike和Car)都是该类的子类。因此,如果我们为Vehicle定义一个数组,那么它也可以包含其所有子类。这将帮助我们在单个阵列中存储多种类型的数据。