Можно создавать массивы объектов точно так же, как создаются массивы данных других типов. Например, следующая программа создает класс display, содержащий информацию о различных адаптерах дисплеев, которые могут быть подключены к ПК. В частности, он содержит число цветов, которые могут быть получены, и тип видеоадаптера. В функции main() создается массив из трех объектов display. Доступ к элементам этого массива осуществляется с помощью обычной процедуры с использованием индексов.
Хотя это и не относится специально к массивам объектов, обратим внимание, каким образом двумерный символьный массив names использован для преобразования перечисляемых значений к их строковым эквивалентам. Для всех переменных перечисляемого типа, не содержащих явной инициализации, первая константа имеет значение 0, вторая 1 и т. д. Поэтому возвращаемое функцией get_type() значение может быть использовано для индексации массива names, что позволяет вывести подходящее имя.
Многомерные массивы объектов индексируются в точности так же, как и массивы любых других типов данных.
Если класс определяет конструктор с параметрами, то можно инициализировать каждый объект массива путем указания списка инициализации в точности так, как это делается для массивов других типов. Однако точная форма списка инициализации будет определяться числом параметров конструктора. Для объектов, чьи конструкторы имеют только один параметр, можно просто указать список начальных значений, используя обычный синтаксис инициализации массивов. Каждое значение в списке по порядку передается конструктору элемента в массиве при его создании. Например, ниже приведена программа, инициализирующая массив:
#include <iostream.h>
class C
{
int i;
public:
C(int j) { i=j; } // конструктор
int get_i() { return i; }
};
int main()
{
C ob[3] = {1, 2, 3}; // инициализаторы
for(int i=0; i<5; i++)
cout << ob[i].get_i() << "\n";
return 0;
}
Эта программа выводит на экран числа 1, 2 и 3.
Если конструктор объекта требует два или большее число аргументов, тогда необходимо использовать слегка измененную форму инициализации, приведенную ниже:
В этом примере конструктор класса C имеет два параметра и поэтому требует два аргумента. В результате инициализация в укороченной форме записи не может использоваться. Вместо этого применяется инициализация в длинной форме, как показано в примере. Разумеется, можно использовать эту длинную форму инициализации во всех случаях.