Иллюстрированный самоучитель по Турбо Паскалю
Элементы коллекций
Коллекции предназначены, строго говоря, для тех же целей, что и массивы языка
Турбо Паскаль: они позволяют создать набор из произвольного количества элементов
и организуют индексный способ доступа к этим элементам. В отличие от массивов
коллекции обладают двумя новыми свойствами. Во-первых, их размер может
динамически меняться в ходе работы программы, фактически ограничиваясь лишь
доступной памятью. Во-вторых, в коллекции могут храниться элементы разных типов.
Последнее свойство называется полиморфизмом коллекций.
Технически коллекции представляют собой массивы нетипизированных указателей
на размещенные в динамической памяти элементы коллекций. Эти массивы размещаются
в куче - отсюда возможность динамического изменения размеров коллекций; с другой
стороны, входящие в эти списки указатели позволяют ссылаться на произвольные
элементы, отсюда полиморфизм.
Полиморфизм коллекций - это очень мощное средство, которым следует
пользоваться с осторожностью, поскольку фактически коллекция хранит лишь
указатели на элементы. Компилятор не может проверить правильность доступа к
элементам; Вы можете поместить в коллекцию один объект, а взять его из коллекции
как объект другого типа и компилятор не сможет предупредить Вас об этом.